3

TkinterはTcl/Tkの上の薄い層にすぎないことを私は知っています。Tkinterでは、ウィンドウのスタイルを変更するためにいくつかのことができます。1つの例はですroot.attributes('-toolwindow', True)。これにより、ウィンドウスタイルがツールウィンドウのスタイルに変更されます。しかし、私は少し低いレベルに行くことを探しています。

ある時点で、Tcl/TkがWindowsのウィンドウスタイルを参照しているのではないかと思います。ウィンドウスタイルを設定し、ひいてはTkinterウィンドウスタイルを設定するために、これを行う必要があると確信しています。私はTkinterウィンドウにWS_DLGFRAMEスタイルであると確信しているものを提供しようとしています。しかし、私はこれにどのようにアプローチするかわかりません。

TkinterのTcl/Tk部分のどこでウィンドウスタイルが割り当てられるのか、そしてこのスタイルを取得するために何を追加する必要があるのか​​疑問に思っています。

最終的な目標は、以下のようなTkinterウィンドウの境界線スタイルを取得することです(終了ボタンがないことに注意してください)。

ここに画像の説明を入力してください

これはWindows7、ところでです。

4

2 に答える 2

5

次のオプションは、ウィンドウ マネージャーにウィンドウを装飾しないように指示します (つまり、タイトル バーとウィンドウ ボタンがなく、境界線もありません)。

root.overrideredirect(True)

偽の引数は装飾を復元します。

于 2011-05-12T10:15:39.720 に答える
3

C に精通している場合は、Tk ソース コードをダウンロードしてください。

私はすぐに見ました、そしてこのファイル ./win/tkWinWm.cで:3072行目(tk859-src.zip)で、あなたが言ったようstatic int WmAttributesCmd()に対処する機能があり-toolwindow、後でによって更新されUpdateWrapper()ます。

したがって、Tk のソース コードを変更しない限り、簡単に変更する方法はありません。

別の方法として、 と定義されFindWindowた Tk のウィンドウ クラスを使用して検索し、 を使用してスタイルを変更することもできます (ただし、これには C への ffi 呼び出しまたは他の手段が必要です)。TK_WIN_CHILD_CLASS_NAMETkChildSetWindowLongPtr( GWLP_STYLE, ...)

私自身、どちらの Tcl/Tk にも精通していないので、それは一粒の塩で考えてください。Tcl/Tk コミュニティを試してみませんか?

于 2011-05-12T05:10:10.203 に答える