Python3
我正在使用Tkinter,得到了意想不到的结果。我想做的是 不同的标签、按钮和输入框来更好地练习我鲜为人知的技巧。你知道吗
这是我的密码:
from tkinter import *
def display_music(event):
music = favoriteMusician.get()
outputEntry.delete(0, 'end')
outputEntry.insert(0, 'Your favorite musician is %s' % music)
def divide(event):
answer = str(int(num1Entry.get())/int(num2Entry.get()))
divideEntry.delete(0, 'end')
divideEntry.insert(0, answer)
root = Tk()
Label(root, text='Who is your favorite musician?').grid(row=0, column=0, sticky=W)
favoriteMusician = Entry(root)
favoriteMusician.grid(row=0, column=2, sticky=W)
b1 = Button(root, text='Output:')
b1.bind('<Button-1>', display_music)
b1.grid(row=1, column=0, sticky=W)
outputEntry = Entry(root)
outputEntry.grid(row=1, column=1, columnspan=2, sticky=W)
num1Entry = Entry(root)
num1Entry.grid(row=2, column=0, sticky=W)
Label(root, text='/').grid(row=2, column=1, sticky=W)
num2Entry = Entry(root)
num2Entry.grid(row=2, column=2, sticky=W)
b2 = Button(root, text='=')
b2.bind('<Button-1>', divide)
b2.grid(row=2, column=3, sticky=W)
divideEntry = Entry(root)
divideEntry.grid(row=2, column=4, sticky=W)
root.mainloop()
但是当我运行代码的时候。有布局的问题,我希望所有的东西都是一致的,但不是所有的东西都是一致的,还有一些大的空间,我不知道如何摆脱。目前情况如下:
我知道这与Tkinter根据现有细胞的大小决定细胞大小有关(对于grid()
)。我做过研究,但找不到答案。你知道吗
除了答案之外,我还可以就如何编写更好的代码提供反馈,还可以提供一些免费学习python的资源。你知道吗
当使用
grid()
布局管理器时,有不同的方法让小部件在Tkinter中对齐。对于同一行上的两个小部件,第一个小部件可以被赋予sticky=E
选项,下一个小部件可以被赋予sticky=W
。这将把两者推到一起。我已经为前两行的小部件做过了。你知道吗另一种方法是使整行成为一个嵌套的
Frame
,其中包含所有小部件。嵌套框架内的布局与包含Frame
的位置无关。我是为最后的四个小部件做的。你知道吗虽然它与路线或布局无关,我还将
display_music()
和divide()
函数更改为Button
回调(使用它们接受的command=xxx
参数),而不是通过bind()
将它们连接到特定小部件(这意味着它们将不再接收您无论如何都不使用的event
参数),使它们成为事件处理程序。你知道吗以下是跑步的感觉:
以下是一些相关Tkinter文章的链接:
The Tkinter Grid Geometry Manager作者:弗雷德里克·伦德(Tkinter的作者)
Tkinter 8.5 reference: a GUI for Python作者:约翰·希普曼(新墨西哥技术计算机中心)
您只需要确保
columnspan
在网格的不同单元格中匹配。此代码应产生所需的输出: 从tkinter导入*相关问题 更多 >
编程相关推荐