gpt4 book ai didi

Python ttk网格不显示所有元素

转载 作者:太空宇宙 更新时间:2023-11-03 18:41:45 25 4
gpt4 key购买 nike

我正在尝试在 Tkinter/ttk 中制作一个简化的日历小部件,以允许我选择月份和年份。我无法展示我的所有元素。在下面给出的表单中,它仅显示带有月份的组合框。我确信,我只是犯了一些愚蠢的错误,其他人会立即指出,然后我会继续为我的愚蠢而捂脸:-)。目标是让按钮、条目和组合框全部显示在配置中:

| <Button | Entry | >Button |
| Combobox |
| ChooseButton |

如果我取消注释 self.pack(),它就会挂起。如果我取消注释 self.pack() 并注释掉 self.box.grid,它会显示其余的小部件。现在,我认为我不应该同时使用 pack 和 grid,我只是尝试了一下,因为我看到其他人这样做,我想我不妨尝试一下。

from Tkinter import Tk
from ttk import Frame, Combobox, Button, Entry
import calendar, re

def printThisFunc(string):
def printFunc():
print string
return printFunc

class SelectMonthDialog(Frame):
def __init__(self, parent, startDate):
Frame.__init__(self, parent, padding='10px')
self.parent = parent
self.parent.title('Select month')
button = Button(self, text='<', command = printThisFunc('<'))
button.grid(row=0, column=0)
self.yearEntry = Entry(self)
self.yearEntry.insert(0,str(startDate.year))
self.yearEntry.grid(row=0, column=1)
button = Button(self, text='>', command = printThisFunc('>'))
button.grid(row=0, column=2)
months = calendar.month_name[1:]
self.box = Combobox(self.parent, state='readonly')
self.box['values'] = months
self.box.current(startDate.month-1)
self.box.grid(row=1, column=0, columnspan=3)
button = Button(self, text='Choose', command = printThisFunc('choose'))
button.grid(row=2, column=0, columnspan=3)
#self.pack()

if __name__ == "__main__":
from datetime import datetime
root = Tk()
SelectMonthDialog(root, datetime.today())
root.mainloop()

最佳答案

您创建的大多数小部件都有 self 的父级。这意味着它们是作为 SelectMonthDialog 实例的小部件的子项。但是,您永远不会将该框架打包/放置/网格到其父级中,因此它及其所有子级都保持不可见。

组合框出现的原因是因为它的父级是父级小部件。

解决办法是:

  1. 将组合框的父级设置为 self,以便它成为 SelectMonthDialog 框架的一部分
  2. self 打包到其父级中,使其可见

关于Python ttk网格不显示所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20382223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com