我对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"))
该方法必须具有button参数的原因是因为我希望它由一个按钮调用,并且要使其发生,它必须具有button参数。
当按钮调用参数时,打印语句起作用,并打印其自身< main .MyWindow对象位于0x7efd64e52a80(main + MyWindow位于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()。非常感谢!
我做了一个答案,所以遇到同样问题的任何人都可以轻松找到答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句