【发布时间】:2021-01-16 21:50:52
【问题描述】:
我有两个程序,比如说 a.py 和 b.py,它们都使用 tkinter 来制作基本的 GUI。
a.py 看起来像这样:
# a.py
import tkinter as tk
import b
window = tk.Tk()
def start_b():
b.start_gui()
startButton = tk.Button(window, text='text', command=lambda: start_b())
startButton.pack()
window.mainloop()
b.py 看起来像这样:
# b.py
import tkinter as tk
def start_gui():
window = tk.Tk()
sortType = tk.StringVar(value='this should be default')
selectMe = tk.Radiobutton(window, text='Select me!', variable=sortType, value='this should be default', tristatevalue=0)
selectMe.pack(anchor='w')
dontSelect = tk.Radiobutton(window, text="Don't select", variable=sortType, value='', tristatevalue=0)
dontSelect.pack(anchor='w')
window.mainloop()
if __name__ == '__main__':
start_gui()
我希望 b.py 中单选按钮的默认选择是“selectMe”按钮。我通过将 StringVar 设置为相同的值来做到这一点。如果您直接运行 b.py,则此方法有效,但由于某种原因,如果您通过 a.py 中的按钮运行它,则默认为“dontSelect”。为什么会这样? 顺便说一下,使用提供的代码可以直接重现问题。
【问题讨论】:
-
问题与创建
Tk的两个实例有关。这样做几乎没有充分的理由。 -
谢谢!这就是问题所在。