首页 > 解决方案 > 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() 

如何从按钮添加新的笔记本选项卡?非常感谢您的帮助!

标签: pythonoopgtk

解决方案


正如 jackw11111 所说,解决方案是在 create_page 函数的末尾添加 self.show_all() 。非常感谢!

我做了一个答案,所以任何有同样问题的人都可以很容易地找到答案。


推荐阅读