【问题标题】:Python tkinter widgets not showingPython tkinter 小部件未显示
【发布时间】:2011-08-21 11:56:12
【问题描述】:

我创建了两个小部件:一个标签和一个画布,它们位于一个类的内部以及该类的 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()

【问题讨论】:

  • 你作为大师传递了什么?请提供完整代码
  • 我认为这可能是问题所在。这是我开始的(不包括初始化 tkinter)

标签: python tkinter widget


【解决方案1】:

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

【讨论】:

  • 不,我已经初始化了 tkinter。我发现问题出在应用程序窗口指向另一个类的其他地方。
【解决方案2】:

您的代码的工作版本供您参考。请注意我是如何为主参数传递 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()

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 2021-05-29
    • 2019-04-23
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    相关资源
    最近更新 更多