첨부 된 스크린 샷에 표시된대로 내 Champlain 맵이 내 GtkWindow를 오버플로합니다. 인터넷에서 비슷한 문제를 가진 사람을 찾을 수 없었습니다.PyGtk : 위젯이 창을 오버플로합니다.
Glade에서 GUI를 만들었고 하나의 빈 패널을 남겨 두었습니다. 코드를 작성하여 GtkChamplain.Embed
위젯을 사용하여지도를 표시 할 수있었습니다. Embed
의 크기 요청을 설정하여 맵 크기가 조정 된지도가 삼키는 것을 막을 때까지는 거의 정상적으로 작동했습니다.
나는이 일이하고 싶지 않았다
물론,이 창을 축소 할 수 있습니다 얼마나 작은과에 제한을 설정하여이 문제를 해결할 수있는 방법을 큰 패널의 왼쪽이 커질 수 있습니다. 난 그냥 Embed
의 크기 요청을 설정하여 적절한 방법으로 그것을 할 것입니다. 왜 이런 일이 일어나고 있는지 또는 어떻게 올바르게 만드는 지 아는 사람이 있습니까?
여기 내 전체 코드가 있습니다.
# -*- coding: utf-8 -*-
import gi
gi.require_version('Champlain', '0.12')
gi.require_version('GtkChamplain', '0.12')
gi.require_version('GtkClutter', '1.0')
from gi.repository import GtkClutter, Clutter
GtkClutter.init([]) # Must be initialized before importing those:
from gi.repository import GObject, Gtk, Champlain, GtkChamplain, Pango
class UserInterface:
def __init__(self):
builder = Gtk.Builder()
builder.add_from_file('zahori.glade')
self.client_list = builder.get_object("client-list")
self.main_window = builder.get_object("main-window")
self.main_panel = builder.get_object("main-panel")
self.client_treeview = builder.get_object("client-treeview")
self.main_window = builder.get_object("main-window")
self.status_label = builder.get_object("status-label")
self.map_embed = GtkChamplain.Embed()
self.map_embed.set_size_request(550, 300)
self.main_panel.add(self.map_embed)
self.main_window.connect("destroy", Gtk.main_quit)
self.main_window.show_all()
UserInterface()
Gtk.main()
아래에서 내 .glade
파일을 찾을 수 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkListStore" id="client-list"/>
<object class="GtkApplicationWindow" id="main-window">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Zahori</property>
<property name="default_width">700</property>
<property name="default_height">400</property>
<child>
<object class="GtkBox" id="main-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkMenuBar" id="main-menu-bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Archivo</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-new</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-open</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-save</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-save-as</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-quit</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Editar</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-cut</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-copy</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-paste</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-delete</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">_Ver</property>
<property name="use_underline">True</property>
</object>
</child>
<child>
<object class="GtkMenuItem">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Ay_uda</property>
<property name="use_underline">True</property>
<child type="submenu">
<object class="GtkMenu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem">
<property name="label">gtk-about</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkToolbar" id="main-toolbar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkToolButton" id="new-scan-button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">new-scan</property>
<property name="label" translatable="yes">New scan</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-new</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="open-button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">open-file</property>
<property name="label" translatable="yes">Open file</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-open</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
<child>
<object class="GtkToolButton" id="save-button">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action_name">save-file</property>
<property name="label" translatable="yes">Save to file</property>
<property name="use_underline">True</property>
<property name="stock_id">gtk-save</property>
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkPaned" id="main-panel">
<property name="visible">True</property>
<property name="can_focus">True</property>
<child>
<object class="GtkTreeView" id="client-treeview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">client-list</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
<child>
<object class="GtkTreeViewColumn" id="client-mac">
<property name="resizable">True</property>
<property name="min_width">200</property>
<property name="title" translatable="yes">Device</property>
</object>
</child>
</object>
<packing>
<property name="resize">False</property>
<property name="shrink">False</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="status-bar">
<property name="height_request">20</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkLabel" id="status-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
</child>
</object>
</interface>