82633


Pythonでttk.EntryでEntry ウィジットを作成しました。styleでrelief＝'SUNKEN'を指定しましたが、flat状態となります。  
tk.Entryでウィジットを作成すると、ウィジット作成時のオプションでrelief＝'SUNKEN'とすれば、sunken状態にできます。  
ttk.EntryではStyleがあまり機能しないのでしょうか？  
ちなみにttk.Entryではfont指定についても、style指定はできず、直接ウィジット作成時のfont指定をしなければなりません。

解決手段をご存知の方がいれば、ご教示願います。

[![実行ダイアログ](https://i.stack.imgur.com/E1Zxz.png)](https://i.stack.imgur.com/E1Zxz.png)

[code]

    import tkinter as tk
    from tkinter import ttk
    
    
    class Test_Dialog():
        def __init__(self):
            self.dialog_size = 300, 80
    
            w, h = self.dialog_size
    
            self.dialog = ttk.tkinter.Tk()
    
            self.dialog.minsize(w, h)
    
            self._create_style_()
            self._create_widget_(self.dialog,self.dialog_size)
    
            self.dialog.mainloop()
    
        def _create_style_(self):
    
            self._Sytle_ = ttk.Style()
    
            self._Sytle_.configure(
                'MainFrame.TFrame',
                background='gainsboro',
                )
    
            self._Sytle_.configure(
                'WorkArea.TEntry',
                background='red',
                foreground='darkgreen',
                relief='sunken',
                )
    
            return
    
        def _create_widget_(self,dialog,size):
    
            dlg_w,dlg_h = size
    
            pad_sp = 10
    
            _main_frame_ = ttk.Frame(
                dialog,
                style='MainFrame.TFrame',
            )
    
            _work_label_ = tk.Label(
                _main_frame_,
                text = 'こちらがttk'
            )
    
            _work_label_2 = tk.Label(
                _main_frame_,
                text = 'こちらがtk'
            )
    
            _work_entry_ = ttk.Entry(
                _main_frame_,
                style='WorkArea.TEntry',
            )
    
            _work_entry_2 = tk.Entry(
                _main_frame_,
                #style='WorkArea.TEntry',
                relief='sunken',
            )
    
            _main_frame_.grid(padx=pad_sp,pady=pad_sp)
            _work_label_.grid(row=0,column=0,)
            _work_label_2.grid(row=0,column=1,)
            _work_entry_.grid(row=1,column=0,)
            _work_entry_2.grid(row=1,column=1,)
    
            _main_frame_.rowconfigure(0,minsize=dlg_h/2)
            _main_frame_.rowconfigure(1,minsize=dlg_h/2)
            _main_frame_.columnconfigure(0,minsize=dlg_w/2)
            _main_frame_.columnconfigure(1,minsize=dlg_w/2)
    
            return
    
    if __name__ == '__main__':
        Test_Dialog()
    
[/code]


CC BY-SA 4.0
2021-09-22T04:22:41.647
82630
2021-09-22T06:03:47.897
32891
question
python tkinter
Python ttk.Entryのstyleでreliefを指定することはできませんか？


コメントでご紹介いただいたページを参考に試行したところ、relief＝'SUNKEN'のスタイルと同様な見た目を適用するには非常に簡単でした。

以下の追加を行うだけで、Windowsのクラシックスタイルと同じようになります。  
ただし、他のウィジットも影響を受けますので、確かめる必要があります。

[code]

    self._Style_.theme_use('classic')
    
[/code]

flatなどほかのrelief状態を作ろうとすると苦労しそうです。


CC BY-SA 4.0
2021-09-22T06:03:47.897
82633
2021-09-22T06:03:47.897
32891
82630
answer