所以我正在尝试创建一个对话框,询问用户输入(数字)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的创建网格方法。按钮有效吗?
我希望这是有道理的......谢谢。
答案 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