我想在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()
答案 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完全填满屏幕,创建一个“无边框”窗口,但仍允许与条目小部件交互并设置焦点。