gtk - GtkLabel 在水平框中垂直展开
问题描述
我正在尝试使用水平框将带有标签的条目小部件放在一行中。但是,标签会垂直扩展。它采用窗口的初始高度,并且不允许缩小到它以下。我已经尝试了所有可能的填充、扩展、对齐等组合,但它没有改变。
如何解决?
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class MyWindow(Gtk.Window):
def __init__(self):
super(MyWindow, self).__init__()
self.init_ui()
def init_ui(self):
hbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 6)
hbox.set_homogeneous(True)
hbox.set_baseline_position(Gtk.BaselinePosition.CENTER)
entry = Gtk.Entry()
entry.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(6400, 6400, 6440))
entry.connect("key-release-event", self.on_key_release)
hbox.pack_start(entry, False, False, 10)
self.label = Gtk.Label("Hello")
self.label.set_width_chars(15)
self.label.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(40000, 40000, 40000))
hbox.pack_start(self.label, False, False, 10)
self.add(hbox)
self.set_title("Entry")
self.set_size_request(350, 250)
self.connect("destroy", Gtk.main_quit)
self.show_all()
def on_key_release(self, widget, event):
self.label.set_text(widget.get_text())
win = MyWindow()
Gtk.main()
解决方案
在水平框之前添加另一个垂直框:
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class MyWindow(Gtk.Window):
def __init__(self):
super(MyWindow, self).__init__()
self.init_ui()
def init_ui(self):
hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL, spacing = 6)
hbox.set_homogeneous(True)
hbox.set_baseline_position(Gtk.BaselinePosition.CENTER)
entry = Gtk.Entry()
entry.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(6400, 6400, 6440))
entry.connect("key-release-event", self.on_key_release)
hbox.pack_start(entry, False, False, 10)
self.label = Gtk.Label("Hello")
self.label.set_width_chars(15)
self.label.modify_bg(Gtk.StateType.NORMAL, Gdk.Color(40000, 40000, 40000))
hbox.pack_start(self.label, False, False, 10)
vbox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL)
vbox.pack_start(hbox, False, False, 0)
self.add(vbox)
self.set_title("Entry")
self.set_size_request(350, 250)
self.connect("destroy", Gtk.main_quit)
self.show_all()
def on_key_release(self, widget, event):
self.label.set_text(widget.get_text())
win = MyWindow()
Gtk.main()
作为旁注,使用非关键字参数并不总是在 Python3 和 Gtk 中正常工作,而不是hbox = Gtk.Box(Gtk.Orientation.HORIZONTAL, 6)
使用hbox = Gtk.Box(orientation = Gtk.Orientation.HORIZONTAL, spacing = 6)
推荐阅读
- html - 引导多个折叠项目
- php - 无法在codeigniter中使用ajax将数据保存在数据库中
- javascript - 向 API 发送数据时,为什么在 http 请求上收到错误 400?
- python - 我已经安装了 ffmpge,但得到以下 DownloadError: ERROR: ffprobe/avprobe and ffmpeg/avconv not found。请安装一个
- javascript - firebase 云消息传递在单击“允许”并手动添加服务工作人员后给出错误的 HTTP 响应代码 (404) 不起作用
- aframe - 如何在网页上嵌入 3D 模型?
- django - 如何批量删除 Django 会话变量?
- c++ - 作为在 C++ 中调用函数的结果的表达式
- scala - 如何通过解析 CSV 文件创建 Map[K, V] 和 Seq[A]?
- android - Android:如何通过 DataBinding 绑定 ProgressBar 可见性?