2

TkinterのToplevel()ウィンドウからタイトルバーを削除するにはどうすればよいですか。今私は私のメインのために私は持っています

    self.master.title("Subtest")
    self.master.geometry("400x200")



    self.alertwindow()


    Label(self.master,textvariable=self.connected,height=4).grid(row=0,column=0)


    Button(self.master,text="Monitor",command= lambda: self.startnewthread(1),width=10).grid(row=6,column=1)
    Button(self.master,text="Quit",command=self.haltprogram).grid(row=6,column=0)

そして私のアラートウィンドウ機能のために私は持っています

def alertwindow(self):
self.listbox=Listbox(Toplevel(self.master,width=150).overrideredirect(True),width=150).pack)

プログラムでルートウィンドウを開き、次にタイトルバーのないトップレベルのリストボックスを開くようにしたかったのです。ただし、プログラムが現在実行しているのはフリーズだけです。.overrideredirect(True)を削除すると、プログラムは2つのリストボックスウィンドウを起動します。Windowsにタイトルバーがないリストボックスを1つだけプログラムで開くにはどうすればよいですか?ありがとう

4

1 に答える 1

2

この行を見て

self.listbox=Listbox(Toplevel(self.master,width=150).overrideredirect(True),width=150).pack)

1行でWAYをやりすぎているのは明らかです。(括弧も一致しません)。分割しましょう。

new_top = Toplevel(self.master,width=150)
new_top.overrideredirect(True)
self.listbox = Listbox(new_top,width=150)
self.listbox.pack()

.gridまた、あなたが使用しているように見えることにも注意してください.pack-一般的に、それはお勧めTkinterできません。ウィジェットを一緒に使用しようとすると、ウィジェットの適切な配置を交渉するために永遠のすべてを喜んで費やします。


何が起こっているかについての私の推測:

  • 実際のコードには適切にバランスの取れた括弧があるため、SyntaxErrorはありません
  • Toplevel.overrideredirctはNoneを返します
  • リストボックスは親ウィジェットとしてNoneを認識し、ルートウィジェットを置き換えます(Tk
  • 次に、ルートウィジェットでとの両方を使用.grid.packているため、プログラムがハングします。
于 2013-01-04T01:28:37.123 に答える