如何用tkinter.simpledialog调用“命令”?

时间:2013-11-19 09:00:17

标签: python user-interface tkinter

所以我正在尝试创建一个对话框,询问用户输入(数字)python的内置Tkinter库。特别是,我用谷歌搜索,这可以通过simpledialog.askinteger方法轻松实现。

在正常的tkinter.button中,我有一个参数“command”,它允许我调用一个方法。这就是我第一次在主窗口中创建代码的这部分:

   self.generate_game_button = tkinter.Button(self.main_window, text='Start!', \
        command=self.create_grid)

但是因为我想在弹出窗口中询问这个数字,在tkinter.simpledialog.askinteger中,命令没有参数,所以我无法调用我的create_grid方法...代码看起来像:

    def press_newgame(self):
        global a
        a = tkinter.simpledialog.askinteger('Inputz', 'Enter the gameboard size')

我的create_grid方法基本上使用输入的int生成一组按钮...如何使用弹出窗口向用户询问数字,然后调用类似于tkinter的创建网格方法。按钮有效吗?

我希望这是有道理的......谢谢。

2 个答案:

答案 0 :(得分:2)

嗯,这与一个简单的按钮的工作方式不同,因为askinteger是一个对话窗口,它不是那里,它必须被调用,然后它会自动返回你有价值 - 就像你期望的那样。

所以我想你想用给定的a值做一些事情(你可能想把它传递给create_grid方法,所以你要做的就是在得到之后调用方法整数值,如下所示:

def press_newgame(self):
    a = tkinter.simpledialog.askinteger('Inputz', 'Enter the gameboard size')
    self.create_grid(a)

答案 1 :(得分:0)

我不确定是否完全理解你的用例。如果我理解得很好,你有一个“新游戏”按钮,在用户按下该按钮后,你想显示一个askinteger对话框来获得你必须为玩家生成的网格大小。在这种情况下,为什么只需在从对话框返回后调用网格创建功能,就像这样:

global a
a = tkinter.simpledialog.askinteger('Inputz', 'Enter the gameboard size')
createGrid(size=a) # or whatever your function is