簡體   English   中英

Python 3.5 中的 .pack ttk 和 sticky

[英].pack ttk and sticky in Python 3.5

我已經找到了如何為 Tk 創建替換徽標,以及如何從窗口中刪除 Tk。 然而,我無法找到任何關於如何粘貼任何按鈕等的存在。 我嘗試創建一個類和一個 def create_widget,但由於某種原因,我在 PyDev 調試中遇到錯誤。 它一直說sticky = N + E 是未定義的。 我認為導入 ttk 會自動允許我通過 self 編輯這些按鈕,但是當我做 self 時,我必須更改周圍的所有內容,然后導入將不允許 root。 我相信這個問題是因為我沒有以正確的方式導入,因為我已經替換了徽標並刪除了 tk. 我的問題是,.pack 是如何工作的,我在這段代碼中是否主要遺漏了什么?

from tkinter import ttk
import tkinter
import tempfile

ICON =     (b'\x00\x00\x01\x00\x01\x00\x10\x10\x00\x00\x01\x00\x08\x00h\x05\x00\x00'
    b'\x16\x00\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00'
    b'\x08\x00\x00\x00\x00\x00@\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    b'\x00\x01\x00\x00\x00\x01') + b'\x00'*1282 + b'\xff'*64

_, ICON_PATH = tempfile.mkstemp()
with open(ICON_PATH, 'wb') as icon_file:
    icon_file.write(ICON)


root = tkinter.Tk()

buttonstyle = ttk.Style()
buttonstyle.map("C.TButton",
    foreground=[('pressed', 'red'), ('active', 'blue')],
    background=[('pressed', '!disabled', 'black'), ('active', 'white')]
    )
colored_btn = ttk.Button(text="Activate", style="C.TButton").pack()

b = ttk.Button(root, text='Rename')
b.pack()

style = ttk.Style()


style.theme_settings("default", {
   "TCombobox": {
       "configure": {"padding": 5},
       "map": {
           "background": [("active", "green2"),
                          ("!disabled", "green4")],
           "fieldbackground": [("!disabled", "green3")],
           "foreground": [("focus", "OliveDrab1"),
                          ("!disabled", "OliveDrab2")]
       }
   }
})

combo = ttk.Combobox().pack()

style.layout("TMenubutton", [
   ("Menubutton.background", None),
   ("Menubutton.button", {"children":
       [("Menubutton.focus", {"children":
           [("Menubutton.padding", {"children":
               [("Menubutton.label", {"side": "left", "expand": 1})]
           })]
       })]
   }),
])

mbtn = ttk.Menubutton(text='Rename')
mbtn.pack()

root.title("Rename")
root.iconbitmap(default = ICON_PATH)

root.geometry("700x300")

label = ttk.Label(root, text = "Rename")
label.pack()

root.mainloop()

看看你的進口:

from tkinter import ttk
import tkinter
import tempfile

現在看看據報道失敗的sticky代碼:

sticky = N + E

引用NE (只是'n''e' )在tkinter ,因此您需要像該包中的其他對象一樣訪問它們,使用tkinter. 字首:

sticky = tkinter.N + tkinter.E

或者只使用文字字符串:

sticky='ne'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM