python - 将变量传递给Python中的另一个变量,tkinter
问题描述
我想传递水果的值,以便我可以打印它,就像选择了your fruit is apple
苹果一样,your fruit is apple orange
如果两者都选择了。也许我应该使用数组?
from tkinter import *
from tkinter import ttk
import tkinter as tk
app = tk.Tk()
def show():
fruit=""
if apple.get()==1:
fruit = "apple"
if orange.get()==1:
fruit = "orange"
msg = "your fruit is %s"%fruit
print(msg)
Label(app, text="fruit selected").grid(row=4,column=0, sticky=W)
apple = IntVar()
Checkbutton(app, text="apple", variable=apple,command = show).grid(row=4,column=1, sticky=W)
orange = IntVar()
Checkbutton(app, text="orange", variable=orange).grid(row=4,column=2, sticky=W)
#size
app.title('Basic message')
app.geometry("700x500")
app.mainloop()
解决方案
可以有很多方法可以做到这一点,但让我们先在你的例子中做到这一点。只需添加一行并对您的show
功能进行一些改进,您就会得到想要的结果。
def show():
fruit=""
if apple.get() and orange.get():
fruit = 'apple orange'
elif apple.get():
fruit = "apple"
elif orange.get():
fruit = "orange"
msg = "your fruit is %s"%fruit
print(msg)
但是可以改进整个代码,使用 for 循环创建不同的 fruitsCheckbutton
并将它们的变量保存IntVar
在var
它们的实例中,这将便于以后访问,最后将这些 Checkbuttons 保存在列表中以便在show
函数中访问它们。逻辑很简单,我只是检查勾选了哪个检查按钮并将它们的文本添加到fruit
变量中。
from tkinter import *
from tkinter import ttk
import tkinter as tk
app = tk.Tk()
ckb_list = []
def show():
f = ''
for ckb in ckb_list:
if ckb.var.get():
f += ckb['text'] + ' '
msg = "your fruit is %s"%f
print(msg)
Label(app, text="fruit selected").grid(row=4,column=0, sticky=W)
for col, fruit in enumerate(('apple', 'orange', 'banana', 'mango')):
ckb = Checkbutton(app, text=fruit, command=show)
ckb.var = ckb['variable'] = IntVar()
ckb.grid(row=4,column=col+1, sticky=W)
ckb_list.append(ckb)
#size
app.title('Basic message')
app.geometry("700x500")
app.mainloop()
推荐阅读
- java - 如何在 Spring Boot 中使用自定义注释模拟方法?
- c# - 如何在不知道任何字段的情况下填充 gridView
- sql - 如何在json中获取从sql中的两个字段组合的列?
- angular - Typescript - 按属性搜索记录?
- javascript - 如何在 useState 中替换 Array?
- laravel - Laravel 望远镜缺失记录
- python - DJANGO 翻译自定义模板标签变量
- python - 以流方式解压 s3 中的嵌套 tar 文件
- php - 使用我的 MySQL 数据库中的 longblob 数据显示背景图像
- oracle - Oracle SQL 按小时分组 24 小时