如何使用tkinter.simpledialog调用"command"?



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

在一个普通的tkinter.button中,我有一个参数"command",它允许我调用一个方法。这就是我第一次在主窗口中制作这部分代码的方式:

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

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

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

我的create_grid方法基本上是使用输入的int来制作一组按钮。我如何使用弹出窗口向用户询问数字,然后调用类似于tkinter的create grid方法来实现这一点。按钮工作吗?

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

好吧,这与简单按钮的工作方式不同,因为askinteger是一个对话框窗口,它不是一直在那里,它必须被调用,然后它会自动返回一个值——正如你所期望的那样。

所以我想你想对给定的a值做一些事情(你可能想把它传递给create_grid方法,所以你所要做的就是在得到整数值后调用该方法,类似这样:

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

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

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

相关内容

最新更新