web-dev-qa-db-ja.com

Tkinterの最小化/最大化ボタンの削除

pythonプログラムがあり、新しいウィンドウを開いて「概要」情報を表示します。このウィンドウには独自の閉じるボタンがあり、サイズを変更できません。ただし、最大化するボタンそしてそれを最小限に抑えることはまだそこにあります、そして私はそれらをなくして欲しいです。

私はTkinterを使用しており、すべての情報をラップしてTkクラスに表示しています。

これまでのコードを以下に示します。私はそれがきれいではないことを知っており、それをクラスに拡張することを計画していますが、先に進む前にこの問題を分類したいと思います。

Windowsマネージャーに表示されるデフォルトのボタンを管理する方法を知っている人はいますか?

def showAbout(self):


    if self.aboutOpen==0:
        self.about=Tk()
        self.about.title("About "+ self.programName)

        Label(self.about,text="%s: Version 1.0" % self.programName ,foreground='blue').pack()
        Label(self.about,text="By Vidar").pack()
        self.contact=Label(self.about,text="Contact: [email protected]",font=("Helvetica", 10))
        self.contact.pack()
        self.closeButton=Button(self.about, text="Close", command = lambda: self.showAbout())
        self.closeButton.pack()
        self.about.geometry("%dx%d+%d+%d" % (175,\
                                        95,\
                                        self.myParent.winfo_rootx()+self.myParent.winfo_width()/2-75,\
                                        self.myParent.winfo_rooty()+self.myParent.winfo_height()/2-35))

        self.about.resizable(0,0)
        self.aboutOpen=1
        self.about.protocol("WM_DELETE_WINDOW", lambda: self.showAbout())
        self.closeButton.focus_force()


        self.contact.bind('<Leave>', self.contactMouseOver)
        self.contact.bind('<Enter>', self.contactMouseOver)
        self.contact.bind('<Button-1>', self.mailAuthor)
    else:
        self.about.destroy()
        self.aboutOpen=0

def contactMouseOver(self,event):

    if event.type==str(7):
        self.contact.config(font=("Helvetica", 10, 'underline'))
    Elif event.type==str(8):
        self.contact.config(font=("Helvetica", 10))

def mailAuthor(self,event):
    import webbrowser
    webbrowser.open('mailto:[email protected]',new=1)
15
Vidar

一般に、WM(ウィンドウマネージャー)が表示することを決定した装飾は、Tkinterのようなツールキットでは簡単に指示できません。それで、私が知っていることと私が見つけたものを要約しましょう:

import Tkinter as tk

root= tk.Tk()

root.title("wm min/max")

# this removes the maximize button
root.resizable(0,0)

# # if on MS Windows, this might do the trick,
# # but I wouldn't know:
# root.attributes(toolwindow=1)

# # for no window manager decorations at all:
# root.overrideredirect(1)
# # useful for something like a splash screen

root.mainloop()

ルートウィンドウ以外のToplevelウィンドウの場合、次のことができる可能性もあります。

toplevel.transient(1)

これにより、最小/最大ボタンが削除されますが、ウィンドウマネージャーにも依存します。私が読んだものから、MS WindowsWMはそれらを削除します。

27
tzot
from tkinter import  *

qw=Tk()
qw.resizable(0,0)      #will disable max/min tab of window
qw.mainloop()

enter image description here

from tkinter import  *

qw=Tk()
qw.overrideredirect(1) # will remove the top badge of window
qw.mainloop()

enter image description here

tkinterで最大化と最小化のオプションを無効にする2つの方法は次のとおりです

これは最大/最小タブを機能しないようにする方法または削除する方法に関する解決策であるため、画像に示されているボタンのコードは例ではないことに注意してください

3
Er M S Dandyan