我想要一个条目,并且想要一个固定大小的列表框,该列表框是固定的。我想要另一个动态高度的列表框它将随时间出现和消失,并且大小也会改变。我希望第二个列表框(实际上是一个下拉列表)显示在我要修复的其他列表框上。我更改大小等的代码是正确的,并且可以与pack()完美配合,但是随着大小的改变,它将上下移动另一个列表框。当我将pack()更改为place(...)时,它不再显示了。

这是我的代码:

from tkinter import *
root = Tk()
entry = Entry(
    root,
    width=50
)
frame = Frame(
    root,
    height=10,
    width=50,
    background="#caeaa9"
)
dropdown = Listbox(
    frame,
    background="#11FF11",
    height=5,
    width=50
)
listbox = Listbox(
    frame,
    background="#FF1111",
    height=10,
    width=50
)
entry.pack()
listbox.pack()
dropdown.place()
frame.pack()
mainloop()


但是,当我运行它时,下拉菜单不会出现。我想念什么?

顺便说一句,我希望下拉菜单的顶部边框恰好在列表框的顶部边框上,并且两者都在条目的正下方。

最佳答案

我强烈建议您不要使用place几何管理器。曾经如果要创建更大或更复杂的界面,必须使用place小部件非常糟糕。我建议改用grid

import tkinter as tk
# Avoid wildcard imports!

root = tk.Tk()

entry = tk.Entry(
    root,
    width=50
)

frame = tk.Frame(
    root,
    background="#caeaa9"
)

listbox = tk.Listbox(
    frame,
    background="#FF1111",
    height=10,
    width=50
)

dropdown = tk.Listbox(
    frame,
    background="#11FF11",
    height=5,
    width=50
)

entry.pack()
listbox.grid(column=0, row=0, sticky=N)
dropdown.grid(column=0, row=0, sticky=N)
frame.pack()

root.mainloop()

关于python - 如何使用tkinter.place()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46382129/

10-12 00:24