tkinter overrideredirect停止输入工作

时间:2016-07-25 16:36:46

标签: python html user-interface tkinter

我想在python中创建一个“无边框”窗口,我的代码在没有overrideredirect的情况下工作,但是当我使用它时,不允许输入。我无法点击进入框

*这是需要弄清楚的代码,它目前处于一个函数中,还有另外500行代码:D *

newWindow = tkinter.Tk()

w = 300
h = 400

ws = 1024
hs = 768
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
newWindow.configure(background="#2E393D")


newWindow.overrideredirect(True)

frame = tkinter.Frame(newWindow)
name = tkinter.Label(newWindow, background="#1c1c1c", width=2, height=4)
name.pack()
global outputl
global inputl
inputl = tkinter.StringVar()
outputl = tkinter.StringVar()
def nomic(empty):
    reply = inputl.get()
    inputl.set("")
    mainProcess(reply)


if way == "a":
    import speech_recognition as sr
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.listen(source)
        try:
            reply = r.recognize_google(audio)
            mainProcess(reply)
        except sr.UnknownValueError:
            backCreateFile("I did not understand that !")

else:
    inputBox = tkinter.Entry(frame, textvariable=inputl, width=40,foreground="#2E393D", background="white", font=("Ubuntu", 13))
    inputBox.bind("<Return>", nomic)
    inputBox.pack(fill="x") 
outputLabel = tkinter.Label(newWindow, textvariable=outputl)
outputLabel.config( background="#2E393D", foreground="white", wraplength=280, pady=10, font=("Ubuntu", 13))
outputLabel.pack(fill="x") 
weatherV = tkinter.StringVar()
weatherV.set("Current Weather - " + status)
weatherLabel = tkinter.Label(newWindow, justify="left", textvariable=weatherV, background="#2E393D", foreground="white", font=("Ubuntu", 13), pady=7).pack(fill="x")
tempV = tkinter.StringVar()
tempV.set("Current Temperature - " + str(ctemp))
tempLabel = tkinter.Label(newWindow, justify="left", textvariable=tempV, background="#2E393D", foreground="white", font=("Ubuntu", 13), pady=7).pack(fill="x")
frame.pack()

3 个答案:

答案 0 :(得分:0)

这是使用Python 3.6和tk 8.6在Windows上运行的最小代码。弹出窗口处于默认位置,左上角是屏幕。

import tkinter as tk

root = tk.Tk()
tag = tk.Label(root, text='Popup entry contents: ')
var = tk.StringVar(root, 'var')
label = tk.Label(root, textvariable=var)
tag.pack(side='left')
label.pack(side='left')

pop = tk.Toplevel(root)
pop.overrideredirect(True)
entry = tk.Entry(pop, textvariable=var)
entry.pack()
#pop.lift()  # Needed? for tk 8.5.18+, not for 8.6

在您的系统上对此进行测试,如果有效,请在代码中找出不同的操作。

答案 1 :(得分:0)

我创建了一个帐户,所以我可以回答这个问题。

使用您的overridedirect语句删除该行,并将其替换为:

root.wm_attributes('-type', 'splash');

^欢迎你。

答案 2 :(得分:0)

我有一个类似的问题,并且能够通过使用

解决它

root.attributes('-fullscreen', True)

这使GUI完全填满屏幕,创建一个“无边框”窗口,但仍允许与条目小部件交互并设置焦点。