Tkinter窗户装饰

时间:2018-07-25 14:55:52

标签: python-2.7 tkinter

我正在使用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()

2 个答案:

答案 0 :(得分:0)

是的,overrideredirect就是这么做的。您将必须添加自己的绑定,以允许交互式移动窗口和调整窗口大小。

对问题The answer

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>.'

结果:

由于窗口将要相对于鼠标位置移动,因此可以将生成的窗口拖动一点点距离。

enter image description here