我正在使用Tkinter为我的python模块构建GUI,但是我不想要默认的Windows标题栏和边框。我使用了“ root.overrideredirect(True)”,但是使用“ overrideredirect()”时,我失去了从窗口中进行控制的能力,例如调整大小并从一个地方转移到另一个地方。每当我运行GUI时,它就会显示在窗口的左上角。
from Tkinter import *
version = "v0.1"
def getinfo():
lab1 = Label(fram, text = "Your name :")
lab2 = Label(fram, text = "Your Password : ")
lab1.grid(row =1,sticky=W)
lab2.grid(row =2,sticky=W)
def Exit():
sys.exit(1)
def btn2():
btn_show = Button(fram,text = "Show")
btn_show.grid(row = 9, sticky = W)
btn_hide = Button(fram, text = "Hide")
btn_hide.grid(row = 9,column = 2, sticky = W)
root = Tk()
root.overrideredirect(True)
root.geometry("450x300")
fram = Frame(root)
fram.grid()
default_labels()
btn2()
root.mainloop()
答案 0 :(得分:0)
是的,overrideredirect
就是这么做的。您将必须添加自己的绑定,以允许交互式移动窗口和调整窗口大小。
Tkinter: windows without title bar but resizable显示了如何添加调整大小。
问题The answer的Python/Tkinter: Mouse drag a window without borders, eg. overridedirect(1)显示了如何处理窗口的移动。
答案 1 :(得分:0)
这是如何构建标题栏并能够左右移动窗口的基本示例。它不是完美的,但应该为您提供一个良好的起点。
function magicReplace(value) {
mapObj = {
'{1}': '<i class="ms ms-1 inline"></i>',
'{2}': '<i class="ms ms-2 inline"></i>',
};
reg = new RegExp( Object.keys(mapObj).join("|").replace(/\{/g, '\\{').replace(/\}/g, '\\}'), "g");
return value.replace(reg, (m) => mapObj[m]);
}
magicReplace('Whenever you cast a spell, you may pay {1}.');
//Returns: 'Whenever you cast a spell, you may pay <i class="ms ms-1 inline"></i>.'
结果:
由于窗口将要相对于鼠标位置移动,因此可以将生成的窗口拖动一点点距离。