如何在 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 即可执行一些有用的操作,例如创建正方形。
