我真的是 GUI 和 python 本身的新手。我正在尝试使用 tkinter 在 python 3.x 中制作一个简单的琐事游戏。这个想法是它会有多个问题,会告诉你你做对了还是错了,以及告诉你做对了多少。然而,我遇到的问题是,由于某种原因,我所有的按钮都表现得好像它们在没有被点击时被点击过一样。代码如下:
from tkinter import *
class Correct(object):
value = True
def __init__(self, text):
self.text = text
class Incorrect(object):
value = False
def __init__(self, text):
self.text = text
def check(value):
if value == True:
print("you picked the right answer!")
else:
print("sorry thats not right")
question1 = ["this is a question", Correct("right answer"), Incorrect("wrong b"), Incorrect("wrong c"),
Incorrect("wrong d")]
master = Tk()
qlabel1 = Label(master,text=question1[0])
# buttons
choice1 = Button(master, text=question1[1].text, command=check(question1[1].value))
choice2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个名为“五连胜”的游戏。我创建了一个 15×15 的列表来放置按钮。(我使用 range(16) 因为我还想要一行和一列来显示行号和列号)
我希望我的实现就像一个按钮被点击时一样,它变成了一个标签。但我不知道用户点击了哪个按钮。
我怎样才能实现它?谢谢!
from tkinter import *
root=Tk()
root.wm_title("Five In a Row")
buttonlst=[ list(range(16)) for i in range(16)]
chess=Label(root,width=2,height=2,text='0')
def p(button):
gi=button.grid_info()
x=gi['row']
y=gi['column']
button.grid_forget()
chess.grid(row=x,column=y)
buttonlst[x][y]=chess
for i in range(16):
for j in range(16):
if i==0:
obj=Label(root,width=2,text=hex(j)[-1].upper())
elif j==0:
obj=Label(root,width=2,text=hex(i)[-1].upper())
else:
obj=Button(root,relief=FLAT,width=2,command=p(obj))
obj.grid(row=i,column=j)
buttonlst[i][j]=obj
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
有一个类似的问题如何确定哪个按钮被按下了 Python TKinter 中的按钮网格?. 但我不太明白。
我创建了一个框架,因为我有两个浏览按钮,我想浏览两个以“.txt”扩展名结尾的文件并将其打印在屏幕上。
在我的场景中,浏览功能在按下框架上的按钮之前被调用。我期待它应该在我按下按钮时调用。附上完整代码。请有人纠正我我做错了什么。
from Tkinter import *
import tkFileDialog as filedialog
global filename
root = Tk()
def browsefunc(entry):
entry = filedialog.askopenfilename(filetypes=[("Text files","*.txt")])
print entry
browsebutton1 = Button(root, text="Browsefile1", command=browsefunc("TXT_file1"))
browsebutton1.pack()
browsebutton2 = Button(root, text="Browsefile2", command=browsefunc("TXT_file2"))
browsebutton2.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我试图让我的程序根据下拉菜单中选择的变量更改文本,但激活命令的按钮似乎不起作用。从我所看到的,选择函数在程序加载后运行,然后再也不会运行,无论我何时单击按钮。
from Tkinter import *
class App:
def __init__(self, root):
self.title = Label(root, text="Choose a food: ",
justify = LEFT, padx = 20).pack()
self.label = Label(root, text = "Please select a food.")
self.label.pack()
self.var = StringVar()
self.var.set("Apple")
food = ["Apple", "Banana", "Pear"]
option = apply(OptionMenu, (root, self.var) + tuple(food))
option.pack()
button = Button(root, text = "Choose", command=self.select())
button.pack()
def select(self):
selection = "You selected the food: " + self.var.get()
print(self.var.get()) #debug message
self.label.config(text = selection)
if __name__ == '__main__':
root …Run Code Online (Sandbox Code Playgroud) 我想延迟函数调用.(或者在我看来:python以错误的顺序执行函数).在下面的例子中,我可以编写两个函数bf1和bf2来代替bf(arg),并且它可以按预期工作:只要按下按钮就会调用该函数.但是如果我在函数中包含参数,则函数调用只执行一次.返回函数本身不会改变行为.
你能不能看看它,并给我一个暗示我对python的逻辑或理解是错误的.
from tkinter import *
def bf(str):
print(str)
# return print(str) #alternative(same behaviour)
main=Tk(screenName='screen',baseName='base')
button1=Button(master=main,text='b1',command=bf("b1"))
button2=Button(master=main,text='b2',command=bf("b2")) # runs once (and runs here)
button1.pack()
button2.pack()
mainloop()
print('end')
Run Code Online (Sandbox Code Playgroud)
--google和stackoverflow搜索只返回延迟函数调用1等特定时间间隔这不是我要搜索的内容.:-(
我想将信息保存在基于 Tkinter 的应用程序的文本文件中。
def SaveInfo():
NameInfo = NameVar.get()
SurnameInfo = SurnameVar.get()
f = open('cv.txt', 'w')
print (NameVar.get(), SurnameInfo)
f.write(f'name - {NameInfo}')
f.close()
NameVar = StringVar()
Label(MainInfo, text='Name ', padx=5, pady=5).grid(row=1, column=1)
Name = Entry(MainInfo, textvariable=NameVar).grid(row=1, columnspan=3,
column=2)
SurnameVar = StringVar()
Label(MainInfo, text='Surname ', padx=5, pady=5).grid(row=2, column=1)
Surname = Entry(MainInfo, textvariable=SurnameVar).grid(row=2,
columnspan=3, column=2)
Submit1 = Button(MainInfo, text='Submit',
command=SaveInfo()).grid(row=10, column=3)
Run Code Online (Sandbox Code Playgroud)
当我在条目中输入内容时,它既不打印任何内容也不保存任何信息。
我正在使用 python tkinter 制作 GUI,并使用ScrolledText小部件来保存日志(我点击了此链接:https ://beenje.github.io/blog/posts/logging-to-a-tkinter-scrolledtext-widget /)。
我想在点击重新运行按钮时清除 ScrolledText 并将新日志记录到 ScrolledText。
我的代码:
import tkinter as tk
import tkinter.scrolledtext
class MainPage(tk.Frame)
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.button_start = tk.Button(self, text='START', command=self.on_rerun_button)
self.button_start.grid(row=7, column=0, columnspan=2, padx=5, pady=5, sticky='NSWE')
self.scrolledtext_log = tk.scrolledtext.ScrolledText(self, state='disabled')
self.scrolledtext_log.configure(font='TkFixedFont')
self.scrolledtext_log.grid(row=0, column=2, rowspan=8, columnspan=8, sticky='NSWE')
def on_rerun_button(self):
self.scrolledtext_log.delete('1.0', tk.END) #but it doesn't work here
# run something here...
Run Code Online (Sandbox Code Playgroud)
请大家帮帮我,非常感谢~~~
假设代码如下,我有两个关于python的问题:
这是代码行:
filemenu.add_command(label="update...", command=CreateWindow)
Run Code Online (Sandbox Code Playgroud)