Python Tkinter:如何向弹出窗口添加自定义边框
下面是我的代码示例。我不明白为什么我不能在弹出窗口周围创建一个薄的黑色边框 请注意,我特意使用self.top.overrideredirectTrue删除了默认边框。但是,我想重新创建一个薄层 请尝试以下Python 2.7:Python Tkinter:如何向弹出窗口添加自定义边框,python,python-2.7,tkinter,border,frame,Python,Python 2.7,Tkinter,Border,Frame,下面是我的代码示例。我不明白为什么我不能在弹出窗口周围创建一个薄的黑色边框 请注意,我特意使用self.top.overrideredirectTrue删除了默认边框。但是,我想重新创建一个薄层 请尝试以下Python 2.7: from Tkinter import Tk, Frame, Toplevel, Label class srcDestDescription(Frame): def __init__(self, parent): Frame.__init__(se
from Tkinter import Tk, Frame, Toplevel, Label
class srcDestDescription(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.top = Toplevel(parent)
self.parent = parent
self.top.overrideredirect(True)
self.top.geometry('+%d+%d' % (350, 100))
self.top.withdraw()
def display(self):
self.top.deiconify()
topLabel = Label(self.top, text = "Hello World")
topLabel.grid(column = 0, columnspan = 2, row = 0, sticky = 'NSWE', padx = 10, pady = (10, 5))
topLabel.config(font = ('times', 14))
class Application(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.parent.geometry('%dx%d+%d+%d' % (300, 300, 0, 0))
self.parent.resizable(0, 0)
self.pack(expand = True)
self.srcDestDescription = srcDestDescription(self)
self.srcDestDescription.display()
def main():
root = Tk()
Application(root)
root.mainloop()
if __name__ == '__main__':
main()
以下是我的作品
from Tkinter import Tk, Frame, Toplevel, Label
class MyTop(Toplevel):
def __init__(self, parent):
Toplevel.__init__(self, parent)
self.overrideredirect(True)
self.withdraw()
self.geometry('+%d+%d' % (350, 100))
topLabel = Label(self, text="Hello World",
borderwidth=1, relief='solid')
topLabel.pack(padx=10, pady=(10, 5))
topLabel.config(font = ('times', 14))
class Application(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.parent.geometry('%dx%d+%d+%d' % (300, 300, 0, 0))
self.parent.resizable(0, 0)
self.pack(expand = True)
self.mytop = MyTop(self.parent)
self.mytop.deiconify()
def main():
root = Tk()
Application(root)
root.mainloop()
if __name__ == '__main__':
main()
在Pythonxy/lib/idlelib/ToolTip.py中可以找到基于Toplevel但带有非Toplevel子类的类的工具提示弹出窗口代码。复制这是你想用的。Idle的CalltipWindow弹出窗口类似,但有点复杂
获取薄边框弹出窗口的另一种方法是使用一个菜单实例,tk_popupself,x,y,entry=docstring将菜单放置在位置x,y处,并使用entry。。典型的用法是右键单击上下文菜单,但您发明了另一种用法。Idle示例是Pythonxy/Lib/idlelib/EditorWindow.py,EditorWindow.right\u menu\u事件。尝试显示未放置、打包或网格化的帧是无用的。使用这些几何方法之一,可以在Tk或Toplevel或子代中显示帧。Toplevel.overrideredirectTrue,不关于边框。它告诉窗口管理器忽略顶层。若要修改上述注释,忽略顶层会隐藏整个窗口框架,顶部栏包括图标、标题和窗口按钮。所以,若你们指的是边框的窗框,你们是对的,但你们必须把东西放进去才能看到任何东西。我正在编写示例代码。在示例中,您只需将标签配置为borderwidth=1,relief='solid'。我想要的是弹出窗口周围的边框。弹出窗口周围的边框正是上面代码中的边框。您可以跳过Toplevel的几何图形,在Toplevel中打包一个可见大小的框架或画布,并将所需的小部件放在容器中的任何位置。