【发布时间】:2017-02-27 13:08:33
【问题描述】:
我正在尝试打开一个简单的对话窗口,用户可以在其中输入基于根窗口上显示的菜单的选项。但是,当我运行代码时,对话框会直接在根窗口中的菜单上方打开,从而使其看不见。有没有办法打开对话框,以便它在根窗口旁边打开,如附图所示。
我已经检查了这个link,它似乎没有任何简单对话框的定位参数。我也尝试过使用顶层,但是打开多个窗口会变得很乱。
我的代码如下:
from Tkinter import *
import tkSimpleDialog
root = Tk()
root.lift()
Label(root, text = "Menu Choices:").grid(row=1, column =0)
Label(root, text='1. Baloney and cheese').grid(row=2, column=0, pady=4)
Label(root, text='2. Roast chicken and gravy').grid(row=3, column=0, pady=4)
Label(root, text='3. Pear salad').grid(row=4, column=0, pady=4)
Label(root, text='4. Cateloupe and brocoli soup').grid(row=5, column=0, pady=4)
people = ["Liam","Henry","Paula"]
menuChoice = []
for i in people:
c = tkSimpleDialog.askinteger('Franks Restaurant', 'Please choose your meal?', parent = root)
menuChoice.append(c)
root.mainloop()
【问题讨论】:
-
这是从用户那里获取输入的一种非常奇怪的方式,而不是 GUI 的设计工作方式。为什么不制作菜单选择按钮或单选按钮,完全避免对话框?
-
您应该只在主窗口中添加一个条目或一个列表框。
-
@BryanOakley + Dashadower 感谢您的 cmets,但这只是我想生成弹出窗口和分配的问题的一个示例。正如您所说,也许最好在根屏幕上显示所有信息,但是当我遍历选项列表然后使用选项更新字典条目时,我决定这样做。也许只是不可能将一个简单的对话框锚定到根窗口的一侧.....
-
@Bryan,使用 tkSimpleDialog 是否是一个好习惯,是另一个问题。这里的问题非常简单,可以简化为:“我怎样才能将 tkSimpleDialog 定位在我想要的位置?”这是一个有效且非常好的问题。我也有同样的问题。
-
@alkey,你的问题是一个百万美元的问题! :) 这是我经过长期研究得出的结论,其中我在另外 3 个地方发现了同样的问题,但未得到解答。真正令人讨厌的是对话框是随机放置的,通常靠近屏幕的左上角。他们至少可以放在中心位置!
标签: python python-2.7 tkinter