2015-04-29 2 views
0

Так я создавал простое окно ввода с Tkinter, но всякий раз, когда у меня есть ShowInfo отображение я не могу ввести в поле вводаTkinter Messagebox вызывая запись отключить

import tkinter as tk 
from tkinter import * 
from tkinter.messagebox import * 


root = tk.Tk() 
root.title("hello world") 
root.minsize(700,600) 

abc = StringVar() 
abc.set("abc") 
Entry(root, bd = 1, width = 50, textvariable=abc).pack(side = TOP) 
showinfo('info', 'hello') 
root.mainloop() 

Я не уверен, если есть что-то не так с моим Python (3.4) или tkinter, но всякий раз, когда я вынимаю строку showinfo, я могу ввести в поле ввода, но когда ее там нет, я не могу.

ответ

2

Поля ввода-вывода по умолчанию tkinter по умолчанию: modal. Это означает, что вам нужно , чтобы закрыть дочернее окно (текстовое окно tkinter), прежде чем вы сможете вернуться к родительскому приложению.

Итак, нет ничего плохого в вашем python или tkinter; Такое поведение предназначено.

Не показывать окно сообщений tkinter перед запуском цикла событий. Попробуйте следующее:

import tkinter as tk 
from tkinter import * 
from tkinter.messagebox import * 


def callback(): 
    showinfo("info", "hello") 

root = tk.Tk() 
root.title("hello world") 
root.minsize(700,600) 

abc = StringVar() 
abc.set("abc") 
Entry(root, bd=1, width=50, textvariable=abc).pack(side=TOP) 
Button(root, text="OK", command=callback).pack() 
root.mainloop() 
+0

Я закрываю инфобокс каждый раз, но вход замораживается, я добавил кнопку с некоторой функциональностью, и она отлично работает после того, как я закрываю инфобокс. Я пробовал нажать «x» и «ОК», но ничто не делает блок ввода функциональным. –

+0

Возможно, потому, что вы показываете tkMessageBox, прежде чем запускать цикл событий. Попробуйте использовать обратный вызов, как я отредактировал ответ для включения. –

+0

, поэтому я добавил, что и он работает, но я запускаю окно showinfo, чтобы всплывать в инструкции if в моем фактическом коде, я не могу запустить его при нажатии кнопки. Я неправильно использую инфобокс, не предполагается ли это как нормальная «функция», как мне нужно называть ее с помощью кнопки, чтобы она работала правильно? –

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