tk获取问题
本帖最后由 元豪 于 2022-10-6 17:43 编辑非要我再发一个帖子吗?{:10_266:} {:10_266:} {:10_266:}
都说可以跟帖继续问,大佬一个个的都不回答...
问:
获取
r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
r1.place(x=20, y=40)
中的value的值
这里面没有定义 value 变量吧......
能不能把代码发全?
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见
不是不回复你,一个很简单的问题没必要故意不回复你还叫你继续发帖子
确实是我真的没看见你回复我(可能是被我不小心刷新了消息提醒,然后刚刚午休了一会,直到你现在发新帖子我才回去看了下之前的帖子,抱歉抱歉):
你设置的 v 是 IntVar 对象可以直接使用 .get() 进行获取,例如你这里 多选 的 value 值,可以表示为 v.get()
Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见
不是不回复你,一个很简单的问题没必要故意不回 ...
StringVar 值对象也同样可以 .get() 获取 ,.set() 设置
python爱好者. 发表于 2022-10-6 15:51
这里面没有定义 value 变量吧......
能不能把代码发全?
r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa) Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见
不是不回复你,一个很简单的问题没必要故意不回 ...
{:10_245:}{:10_245:} Twilight6 发表于 2022-10-6 16:24
跟帖询问肯定没问题,你刚刚回复我的消息我完全没看见
不是不回复你,一个很简单的问题没必要故意不回 ...
{:10_245:}没关系啊,抱怨一下而已,别介意啊{:10_245:} 元豪 发表于 2022-10-6 17:33
r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
对,value 的值可以通过 variable = v这里设置的 v 进行获取
元豪 发表于 2022-10-6 17:37
没关系啊,抱怨一下而已,别介意啊
没事,你没错,确实是我忘回复了,你别介意就行
Twilight6 发表于 2022-10-6 17:57
对,value 的值可以通过 variable = v这里设置的 v 进行获取
算了让你看一下完整代码
# -*- coding: <utf-8> -*- #
import random
import tkinter as tk
from tkinter import messagebox
import time
from matplotlib.widgets import EllipseSelector
window = tk.Tk()
window.title('勇士游戏')
window.geometry('300x250')
window.resizable(False, False)
queding = False
TianShu = 1
GongJi = random.randint(25, 30)
XueLiang = 100
JiE = 100
SuDu = 10
FangYu = 10
xinxi = '''
血量: {}
饥饿度: {}
速度: {}
防御: {}
'''.format(XueLiang, JiE, SuDu, FangYu)
v = tk.IntVar()
def TuiChu():
tuichu = messagebox.askokcancel(title='退出', message='你确定要退出游戏吗?')
if tuichu:
window.quit()
def ZhuCaiDan():
zhucaidan = messagebox.askokcancel(title='返回', message='你确定要返回主菜单吗?')
if zhucaidan:
pass
def QueDing():
global QueDing
if QueDing:
QueDing = True
print('True')
else:
QueDing = False
print('False')
def ChuFa():
pass
def ZhuangBei():
pass
def ChaKanZhuangBei():
pass
def WuPin():
pass
def ShiYong():
pass
def YiTian():
pass
l = tk.Label(window, text='今天是第 {} 天,你要:'.format(TianShu), font=1)
l.place(x=80, y=5)
XinXi = tk.Label(window, text=xinxi, bg='yellow', fg='black', font=15, width=15, height=8)
XinXi.place(x=150, y=50)
r1 = tk.Radiobutton(window, text='1. 出发', variable=v, value=1, command=ChuFa)
r1.place(x=20, y=40)
r2 = tk.Radiobutton(window, text='2. 装备物品', variable=v, value=2, command=ZhuangBei)
r2.place(x=20, y=65)
r3 = tk.Radiobutton(window, text='3. 查看装备', variable=v, value=3, command=ChaKanZhuangBei)
r3.place(x=20, y=90)
r4 = tk.Radiobutton(window, text='4. 查看物品', variable=v, value=4, command=WuPin)
r4.place(x=20, y=115)
r5 = tk.Radiobutton(window, text='5. 吃东西', variable=v, value=5, command=ShiYong)
r5.place(x=20, y=140)
r6 = tk.Radiobutton(window, text='6. 过了这一天~', variable=v, value=6, command=YiTian)
r6.place(x=20, y=165)
B = tk.Button(window, text='确定', bg='gray', width=25, height=2, command=QueDing)
B.place(x=55, y=195)
if QueDing == True:
if v.get() == 1:
print("haha")
m = tk.Menu(window)
f = tk.Menu(m, tearoff=0)
m.add_cascade(label='返回', menu=f)
f.add_command(label='返回主菜单', command=ZhuCaiDan)
window.config(menu=m)
b = tk.Button(window, text='退出游戏', bg='black', fg='white', width=7, height=1, command=TuiChu)
b.place(x=2, y=2)
window.mainloop()
点了确定并按下第一个按钮但是并没有打印haha
元豪 发表于 2022-10-6 18:00
算了让你看一下完整代码
你要把内容放到函数中去,例如可以设置个 button,设置 commad 触发函数,就可以查看每次的打印,否则放到主代码上就只会一开始运行一次
元豪 发表于 2022-10-6 18:00
算了让你看一下完整代码
你这个文字游戏看起来不错哟
可以参考参考这个代码:
from tkinter import *
master = Tk()
v = StringVar()
v.set(2)
Radiobutton(master, text="One", variable=v, value=1).pack(anchor=W)
Radiobutton(master, text="Two", variable=v, value=2).pack(anchor=W)
Radiobutton(master, text="Three", variable=v, value=3).pack(anchor=W)
def show():
print(v.get())
button = Button(master, text="测试", command=show)
button.pack()
mainloop() Twilight6 发表于 2022-10-6 18:04
你要把内容放到函数中去,例如可以设置个 button,设置 commad 触发函数,就可以查看每次的打印,否 ...
?
’ 确定 ‘ 不就是一个Button吗?
? 元豪 发表于 2022-10-6 18:07
?
’ 确定 ‘ 不就是一个Button吗?
?
没错呀,但是你的代码:
if QueDing == True:
if v.get() == 1:
print("haha")
而且你代码中的 get 函数不在 QueDing() 中进行调用嗷
Twilight6 发表于 2022-10-6 18:21
没错呀,但是你的代码:
if QueDing == True:
if v.get() == 1:
我把函数改了一下,效果有趣极了...
def QueDing():
global queding
if queding == False:
queding = True
if v.get() == 1:
print("51616161616161616161616161616")
else:
queding = False
现在,一开始,按钮会全部选上...
元豪 发表于 2022-10-6 18:25
我把函数改了一下,效果有趣极了...
哦,是我的问题{:10_262:} 元豪 发表于 2022-10-6 18:29
哦,是我的问题
哈哈 我测试了下没什么问题~
Twilight6 发表于 2022-10-6 18:30
哈哈 我测试了下没什么问题~
敢问大佬,有没有办法让按钮按着的时候是True,松开时是False呢?{:10_329:} 元豪 发表于 2022-10-6 18:57
敢问大佬,有没有办法让按钮按着的时候是True,松开时是False呢?
看看这篇文章:https://fishc.com.cn/forum.php?mod=viewthread&tid=61373&extra=page%3D1%26filter%3Dtypeid%26typeid%3D604
我也是现查现写的,你也可以去鱼C整理的 Tkinter 文档看看
可以这样实现,参考代码:
from tkinter import *
from time import sleep
from threading import Thread
root = Tk()
flag = False
button = Button(root, text="测试")
button.pack()
# ↓ 主要实现代码 --------------------------------
def set_True(event):
global flag
flag = True
def set_False(event):
global flag
flag = False
button.bind("<Button>", set_True)
button.bind("<ButtonRelease>", set_False)
# ↑ 主要实现代码 --------------------------------
# 多线程打印下实现效果,可以删除
def print_flag():
while True:
sleep(1)
print(flag)
Thread(target=print_flag).start()
mainloop() Twilight6 发表于 2022-10-6 19:10
看看这篇文章:https://fishc.com.cn/forum.php?mod=viewthread&tid=61373&extra=page%3D1%26filter% ...
我的钱...
页:
[1]
2