gpt4 book ai didi

Python 3.4.3 tkinter - 程序在声明 IntVar 或任何其他 tkinter 数据类型时卡住

转载 作者:太空狗 更新时间:2023-10-30 02:58:31 24 4
gpt4 key购买 nike

上一主题:Python 3.4 tkinter checkbutton variable handling not working / responding

在长线程之后,问题似乎与运行 root.mainloop() 之前的 IntVar 声明有关。显然,一旦进行了语法更改,上一个线程中的代码就可以与 Python 2.6.6 一起使用(感谢 PM 2Ring)。您可以在上一个线程中查看完整代码。这是一个(大致)最小的、完整的和可验证的示例:

import tkinter as tk

class Thing(tk.Frame):

def Switch(self):
if self.anyVar.get():
state = "disabled"
else:
state = "normal"
print(state)

self.entry.configure(state=state)

def createWidgets(self):

### This is the problem.
print("testbefore")
self.anyVar = tk.IntVar()
print("testafter")
### End of problem. testafter is never printed. BUT WHY?!?!

tk.Label(self,text="Test",font=("Times New Roman",15)).grid(row=0,column=0,sticky="W",padx=5,pady=5)
self.box = tk.Checkbutton(self,variable=self.anyVar,command=self.Switch)
self.box.grid(row=1,column=1,sticky="W",padx=0,pady=5)
self.entry = tk.Entry(self,width=2)
self.entry.grid(row=2,column=1,sticky="W",padx=2,pady=5)

def __init__(self, parent):

tk.Frame.__init__(self, parent)
self.pack()
self.parent = parent
self.createWidgets()

class Framework(tk.Frame):

def __init__(self, parent):

tk.Frame.__init__(self, parent)
self.instances = []
self.parent = parent
thing = Thing(self)
self.instances.append(thing)

def Activity(self):

self.Clear()
self.instances[0].pack()


def Initialise(window):
window.master = tk.Frame(window)
window.master.grid()
window.instances = Framework(window.master)
window.instances.grid()

root = tk.Tk()
Initialise(root)
root.mainloop()
root.destroy()

代码将一直执行到 self.anyVar = tk.IntVar() 为止,此时程序卡住但没有给出错误消息。 “testafter”从不打印。知道这是为什么吗?谢谢。

最佳答案

(注意:我原来的答案与 gridpack 的使用有关。那个答案不正确。这是正确的答案)

您偶然发现了一个非常模糊的边缘情况,它在 python 2.6 中不存在,但至少在某些版本的 python 3 中存在。

我正在 3.4 上测试它。在该版本中,变量处理代码中引入了一些新代码。您的代码导致此新代码进入无限循环。问题围绕着您选择使用 master 作为小部件属性的名称。这是您要覆盖的内置属性,导致代码进入无限循环。

解决方法很简单:将 window.master 重命名为 master 以外的名称。例如:

window._master = tk.Frame(window)

关于Python 3.4.3 tkinter - 程序在声明 IntVar 或任何其他 tkinter 数据类型时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713742/

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