2013-11-19 3 views
1

Итак, я пытаюсь создать диалоговое окно, которое запрашивает у пользователя ввод (число) с встроенной библиотекой Tkinter от python. В частности, я googled, что это может быть легко достигнуто с помощью метода simpleedog.askinteger.Как я могу назвать «команду» с помощью tkinter.simpledialog?

В обычном 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 в основном делает набор кнопок, используя введенные ква ... Как можно достичь это с помощью всплывающего окна, чтобы спросить пользователя о номере, а затем вызвать метод создания сетки, аналогичный тому, как работает tkinter.Button?

Надеюсь, это имеет смысл ... Спасибо.

ответ

2

Ну, это работает по-другому, чем простая кнопка, потому что askinteger это диалоговое окно, которое не является там постоянно, он должен называться, а затем он автоматически вернет вам значение - как вы ожидаете Это.

Так что я предполагаю, что вы хотите сделать что-то с данной a значением (вы, вероятно, хотите, чтобы передать его методу create_grid, поэтому все, что вам нужно сделать, это вызвать метод после того, как вы получили целое значение, что-то вроде этого:

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

Большое спасибо! такой простой думаю, чтобы не заметить ... – jjcastil

+0

никаких проблем, я рад, что смог бы помочь;) –

0

Я не уверен, что прекрасно понимаю ваше USECASE. Если я хорошо понимаю, у вас есть кнопка «Новая игра», и после того, как пользователь нажал на эту кнопку, вы хотите, чтобы показать диалоговое окно askinteger, чтобы получить размер сетки, которую вы должны создать для игрока. В этом случае, почему вы просто вызываете свою функцию создания сетки просто после того, как вы вернулись из диалогового окна, так:

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

 Смежные вопросы

  • Нет связанных вопросов^_^