【问题标题】:Importing Python Tkinter script changes default radiobutton value导入 Python Tkinter 脚本会更改默认单选按钮值
【发布时间】: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的两个实例有关。这样做几乎没有充分的理由。
  • 谢谢!这就是问题所在。

标签: python tkinter


【解决方案1】:

谢谢布莱恩·奥克利!通过将 b.py 中的 window = tk.Tk() 更改为 window = tk.Toplevel() 它现在可以工作了。

【讨论】:

    猜你喜欢
    • 2017-08-08
    • 1970-01-01
    • 2015-06-15
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2016-10-20
    • 2013-08-25
    相关资源
    最近更新 更多