Skip to main content
 首页 » 编程设计

python之如何在 tkinter 中使用文本框并使用值 python 3

2025年05月04日11www_RR

如何在 tkinter 的条目小部件中创建多行并使用这些输入来创建一些东西? 例如,我想要一个文本框小部件出现并询问用户:

How many squares do you want? (ex: 4x4, 5x5) 
What color do you want them? 

在用户输入的情况下,我想在特定的高度/宽度上创建那么多 x 数量的正方形,并指定颜色等。 我是 tkinter 的新手,我不太确定如何处理这个问题。

我试过使用它,但我不太确定如何添加更多行和使用输入的值。

import tkinter 
from tkinter import * 
 
class Squares: 
    root = Tk() 
    root.title('Random') 
    x = Label(text='How many squares? (ex: 4x4, 5x3)').pack(side=TOP,padx=10,pady=10) 
    Entry(root, width=10).pack(side=TOP,padx=10,pady=10) 
    Button(root, text='OK').pack(side= LEFT) 
    Button(root, text='CLOSE').pack(side= RIGHT) 

请您参考如下方法:

你这里有很多问题。

我不确定 Squares 类应该做什么,但它基本上什么也没做。您有一堆代码在定义类时运行,创建一些变量(最终将作为类属性,由类的所有实例共享),然后……就是这样。我不想弄清楚您在这里的意图,而是打算废弃该类并使其成为所有模块级代码。

您永远不会调用 root.mainloop(),因此您的程序只会定义一个 GUI,然后永远不会运行它。

您没有将按钮绑定(bind)到任何东西,因此它们不可能产生任何效果。您需要创建某种函数来执行某些操作,然后将其作为 command 参数传递,或者稍后将其传递给 .bind。

您不存储任何控件的引用,因此以后无法访问它们。如果你想从条目中获取值,你需要一些方法来引用它。 (异常(exception)是您的 x 变量,但它将是 None,因为您将其设置为调用 pack 的结果Label,而不是 Label 本身。)

完成后,您只需解析值,这非常简单。

综合起来:

import tkinter 
from tkinter import * 
 
root = Tk() 
root.title('Random') 
Label(text='How many squares? (ex: 4x4, 5x3)').pack(side=TOP,padx=10,pady=10) 
 
entry = Entry(root, width=10) 
entry.pack(side=TOP,padx=10,pady=10) 
 
def onok(): 
    x, y = entry.get().split('x') 
    for row in range(int(y)): 
        for col in range(int(x)): 
            print((col, row)) 
 
Button(root, text='OK', command=onok).pack(side=LEFT) 
Button(root, text='CLOSE').pack(side= RIGHT) 
 
root.mainloop() 

您只需更改 print 即可执行一些有用的操作,例如创建正方形。