相关疑难解决方法(0)

tkinter 按钮命令无需单击即可运行功能?

我真的是 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)

python tkinter python-3.x

3
推荐指数
1
解决办法
1万
查看次数

Python tkinter查找单击了哪个按钮

我正在尝试实现一个名为“五连胜”的游戏。我创建了一个 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 中的按钮网格?. 但我不太明白。

python tkinter

3
推荐指数
1
解决办法
6590
查看次数

在单击按钮之前执行 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)

python tkinter python-2.7 tkinter-layout

3
推荐指数
1
解决办法
3381
查看次数

按钮的 Tkinter 命令不起作用

我试图让我的程序根据下拉菜单中选择的变量更改文本,但激活命令的按钮似乎不起作用。从我所看到的,选择函数在程序加载后运行,然后再也不会运行,无论我何时单击按钮。

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 tkinter

2
推荐指数
1
解决办法
1万
查看次数

python延迟函数调用

我想延迟函数调用.(或者在我看来: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等特定时间间隔这不是我要搜索的内容.:-(

python tkinter function delay

1
推荐指数
1
解决办法
949
查看次数

如何在 Tkinter 中保存信息?

我想将信息保存在基于 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

1
推荐指数
1
解决办法
47
查看次数

如何清除/删除 Tkinter“ScrolledText”小部件的内容?

我正在使用 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 tkinter tkinter-scrolledtext

1
推荐指数
1
解决办法
2548
查看次数

python中有和没有括号的函数之间的区别

假设代码如下,我有两个关于python的问题:

  1. 为什么不能将带括号或参数的函数传递给add_command
  2. 如果我的CreateWindow函数必须参数,我该怎么办?

这是代码行:

filemenu.add_command(label="update...", command=CreateWindow)
Run Code Online (Sandbox Code Playgroud)

python tkinter

-1
推荐指数
1
解决办法
69
查看次数