python-3.x - Tkinter mainloop() 中的模式选择
问题描述
我遇到了以下问题:我希望能够在三个 if 语句之一正在运行时选择一种模式,并且何时完成转到所选的那个。例如,如果“模式”正在运行,我在“s”之后选择“p”,如果结束,“p”如果开始。我也希望这些进程不间断地运行谢谢:D
import tkinter as tk
from tkinter import *
answer = ''
root = Tk()
root.geometry('250x150')
root.title('Mode Selection')
v = tk.IntVar()
v.set(0) # initializing the choice, i.e. Python
b1 = Button()
modes = [
('s', 'to start"'),
('p', 'to pause'),
('a', 'to abort'),
]
tk.Label(root,
text="""Choose a mode:""",
justify=tk.CENTER,
padx=20).pack()
for val, language in enumerate(modes):
tk.Radiobutton(root,
text=language,
padx=20,
variable=v,
value=val,
justify=tk.CENTER).pack()
answer = modes[v.get()][0]
if answer == 's':
print('s')
# do something...
elif answer == 'p':
print('p')
# do something...
elif answer == 'a':
print('a')
# do something...
root.mainloop()
解决方案
在这里,使用command
,我们可以关联一个由单选按钮的选择触发的事件或函数
modes = [
('s', 'to start"'),
('p', 'to pause'),
('a', 'to abort'),
]
def show_mode(z):
# Do something...
print(z)
tk.Radiobutton(root,
text=modes[0],
padx=20,
variable=v,
value=0,
justify=tk.CENTER,
command = lambda : show_mode('s')).pack()
tk.Radiobutton(root,
text=modes[1],
padx=20,
variable=v,
value=1,
justify=tk.CENTER,
command = lambda : show_mode('p')).pack()
tk.Radiobutton(root,
text=modes[2],
padx=20,
variable=v,
value=2,
justify=tk.CENTER,
command = lambda : show_mode('a')).pack()
希望这可以帮助 :)
推荐阅读
- python - 将参数传递给命令组,python fire
- swiftui - 如何修复 NavigationLink 错误?
- c - 为什么 kill 不适用于某些进程但适用于其他进程?
- python - 当我自己的列更改时更新我推荐的 SQLAlchemy 列
- javascript - , 被添加到 HTML 结构中
- javascript - Alexa 设备地址 API 问题
- sql - bigquery:加入“结构”列
- bash - 这个 csr 有什么问题,因为 openssl 拒绝解码它?(
- flutter - 在 Flutter 中出现以下错误“RenderFlex 子项具有非零弹性,但传入的高度约束是无界的”
- google-chrome-extension - 用于突出显示文本字段的 Chrome 扩展