python - Python Gtk Notebook 从按钮打开一个新选项卡
问题描述
我对 OOP 和 gtk 编程很陌生,如果我的问题的答案很明显,我很抱歉,但我找不到解决方案。我正在尝试使用 Gtk 笔记本制作类似浏览器的界面。我写了一个添加选项卡的方法,它似乎可以工作,因为当我在init中调用它时,它可以工作,并添加一个新选项卡。这里的方法是:
def create_page(self, button):
print("creating a new page")
print(self)
self.newpage = Gtk.Box()
self.newpage.set_border_width(50)
self.newpage.add(Gtk.Label.new("add notes here"))
self.notebook.append_page(self.newpage, Gtk.Label.new("new page"))
该方法必须具有按钮参数的原因是因为我希望它被按钮调用,并且为此,它必须具有按钮参数。
当按钮调用参数时,打印语句起作用,并打印其自身 < main .MyWindow object at 0x7efd64e52a80 ( main +MyWindow at 0xe60270)>。它打印的输出与我从init调用它时完全相同。问题是由于某种原因它实际上从未添加新的笔记本选项卡。这里我的完整代码是:
import gi
# Since a system can have multiple versions
# of GTK + installed, we want to make
# sure that we are importing GTK + 3.
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title ="Stickies Hub")
#self.set_border_width(70)
# Create Notebook
self.notebook = Gtk.Notebook.new()
self.add(self.notebook)
#create buttons
self.new_tab = Gtk.Button(label=("button"))
self.new_tab.connect("clicked", self.create_page)
# Create pages
self.page1 = Gtk.Box()
self.page1.set_border_width(50)
self.page1.add(Gtk.Label.new("Welcome to Geeks for Geeks"))
self.notebook.append_page(self.page1, Gtk.Label.new("Click Here"))
self.page2 = Gtk.Box()
self.page2.set_border_width(50)
self.page2.add(Gtk.Label.new("A computer science portal for geeks"))
self.page2.add(self.new_tab)
self.notebook.append_page(self.page2, Gtk.Label.new("Click Here"))
self.create_page(self.new_tab)
self.create_page(self.new_tab)
def create_page(self, button):
print("creating a new page")
print(self)
self.newpage = Gtk.Box()
self.newpage.set_border_width(50)
self.newpage.add(Gtk.Label.new("new page"))
self.notebook.append_page(self.newpage, Gtk.Label.new("new page"))
win = MyWindow()
win.connect("destroy", Gtk.main_quit)
# Display the window.
win.show_all()
# Start the GTK + processing loop
Gtk.main()
如何从按钮添加新的笔记本选项卡?非常感谢您的帮助!
解决方案
正如 jackw11111 所说,解决方案是在 create_page 函数的末尾添加 self.show_all() 。非常感谢!
我做了一个答案,所以任何有同样问题的人都可以很容易地找到答案。
推荐阅读
- c# - Sql 存储过程到带有时间戳的 csv 文件
- sharepoint-2013 - Powerapps - 从浏览屏幕中选择“标题”文本并将其默认添加到表单屏幕下拉选项
- node.js - 如何在递增循环之前等待异步进程在 for 循环内完成
- python - 通过 pycomm 读取标签时超时
- javascript - 从当前时间而不是源日期计算的时间戳
- c - 编码:谁能解释一下为什么在比较两个数字的最低有效位时会有不同的输出?
- reactjs - 带有 react-select 的 Material ui 自动完成功能可在每次搜索时获取 db
- ios - 关闭所有以前的视图控制器
- python - 在 Windows 2008 R2 中运行 TensorFlow CPU 失败
- linux - '! 是什么意思?-e "/etc/httpd"' in Perl in 'if' 条件