如何在Linux中显示tkinter窗口

时间:2014-03-08 03:59:55

标签: python linux tkinter

我试图在Python Programming for Kids中继续学习。我正与一群邻居小孩一起工作,并降低我们使用Raspberry Pi作为我们的计算机的成本。我是Windows用户,我选择的GUI构建器是WxPython。我想为下周的课程做好准备并遇到问题。我输入了以下代码

from tkinter import *
tk = Tk()
btn = Button(tk,text = 'click me')
btn.pack()

根据书中第二行应该创建一个窗口(我认为在Wx世界中的框架),第三行定义一个按钮对象,第四行将其插入窗口。

然而,这不起作用 - tk窗口没有显示,屏幕上没有按钮,我也无法找出原因。我输入了tkinter,当我输入dir(tk)时,tk对象有很多方法/属性可见,所以我知道我们在Pi上有tkinter。

再次,输入此代码后,没有任何可见的事情发生。我删除了与创建按钮有关的代码,但仍然没有任何反应,所以我不知道从哪里开始诊断问题我已经用Google搜索信息并且没有找到任何有用的信息

任何见解都将受到赞赏。

我确实在超级用户上提出了这个问题但是没有Tkinter标签。 。

嗯,我需要一个

tk.pack() 

声明 - 我会报告回来。

1 个答案:

答案 0 :(得分:1)

不,您不需要tk.pack()。你需要的是启动事件循环。顾名思义,事件循环是一个处理事件的循环。 Tkinter中的所有内容都作为事件的响应发生,包括在屏幕上实际绘制小部件或窗口。

作为文件的最后一行,添加以下内容:

tk.mainloop()

我鼓励你按照你的方式进行导入。我知道很多tkinter教程都是这样做的,但这样做很糟糕。相反,这样做:

import tkinter as tk
root = tk.Tk()
btn = tk.Button(root, text='click me')
btn.pack()
root.mainloop()

它需要为每个小部件键入三个额外的字符,但作为交换,您可以获得随着时间的推移更容易维护的代码。

PEP8是官方的python样式指南,它明确建议不要使用通配符:

  

应该避免使用通配符导入(来自import *)   不清楚命名空间中存在哪些名称,令人困惑   读者和许多自动化工具。有一种防御用途   通配符导入的情况,即重新发布内部   接口作为公共API的一部分(例如,覆盖纯粹的   Python实现的接口与来自的定义   可选的加速器模块以及确切的定义   被覆盖的事先不知道。

请参阅http://legacy.python.org/dev/peps/pep-0008/#imports