gpt4 book ai didi

python - 如何让 tkinter 窗口在 Linux 中显示

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:57 24 4
gpt4 key购买 nike

我正在尝试阅读 Python Programming for Kids 一书。我正在与一群邻居 child 一起工作,为了降低成本,我们使用 Raspberry Pi 作为我们的计算机。我是 Windows 用户,我选择的 GUI 构建器是 WxPython。我正在努力为下周的类(class)做准备,但遇到了问题。我已经输入了下面的代码

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

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

但是,这不起作用 - tk 窗口未显示,屏幕上也没有按钮,我无法弄清楚原因。 tkinter 已导入,当我键入 dir(tk) 时,tk 对象有很多可见的方法/属性,所以我知道我们在 Pi 上有 tkinter。

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

如有任何见解,我们将不胜感激。

我确实在 super 用户上问过这个问题,但是没有 Tkinter 标签所以。 . .

嗯,我需要一个

tk.pack() 

声明 - 我会报告。

最佳答案

不,你不需要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 风格指南,它明确建议不要使用通配符导入:

Wildcard imports (from import *) should be avoided, as they make it unclear which names are present in the namespace, confusing both readers and many automated tools. There is one defensible use case for a wildcard import, which is to republish an internal interface as part of a public API (for example, overwriting a pure Python implementation of an interface with the definitions from an optional accelerator module and exactly which definitions will be overwritten isn't known in advance).

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

关于python - 如何让 tkinter 窗口在 Linux 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com