繁体   English   中英

Python Tkinter小部件未显示

[英]Python tkinter widgets not showing

我创建了两个小部件:标签和画布,它们位于类的内部以及类的init方法中。 由于某些原因,没有显示任何小部件,而只是给了我一个空白的tkinter窗口。

def __init__ (self, master):
    self.mousepos = 0,0
    self.clickpos = 0,0
    self.poslabel = Label(master, text = "Mouse Click: " \
                          + str(self.clickpos) + "Cursor Point: "\
                          + str(self.mousepos))
    self.poslabel.pack()
    self.fcanvas = Canvas(master,width=800,height=400, bg = 'grey90',\
                          borderwidth = 5, relief = RAISED)
    self.fcanvas.bind("<Button-1>", self.pressButton1)
    self.fcanvas.pack()

如果这就是您的所有代码,那么您将忘记运行根窗口的mainloop方法。 窗口绘制是通过事件循环处理的事件发生的。 如果它不运行,则窗户将没有机会在屏幕上绘制自己。

供参考,这里是您的代码的有效版本。 请注意,我如何为master参数传递root权限 另外,请注意我如何在root用户上使用.mainloop()方法。

Tkinter循环运行,如果不调用.mainloop()方法,则程序将无法正常运行。

这应该工作:

from Tkinter import *

class MyWidgets :
    def __init__ (self, master) :
        self.mousepos = 0,0
        self.clickpos = 0,0
        self.poslabel = Label(master, text = "Mouse Click: " \
                              + str(self.clickpos) + "Cursor Point: "\
                              + str(self.mousepos))
        self.poslabel.pack()

        self.fcanvas = Canvas(master, width=800,height=400, bg = 'grey90',\
                              borderwidth = 5, relief = RAISED)
        self.fcanvas.bind("<Button-1>", self.pressButton1)
        self.fcanvas.pack()

    def pressButton1 (self, event) :
        print 'You pressed button 1!'

if __name__ == '__main__' :

    root = Tk()
    MyWidgets(root)
    root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM