Я на самом деле пытаюсь создать ttk.Spinbox
от tkinter.Spinbox
. Я могу манипулировать кодами ниже, например, ttk.Scrollbar
. tkinter.Spinbox
Кнопка дает старый взгляд на мой графический интерфейс, поэтому я хочу ttk.Spinbox
.Создайте новый виджет ttk от tkinter
Редактировать: Я использую Python 3.4
на ОС Windows 7. Мне нужен тематический виджет Spinbox. ttk.__init__
файл не имеет класса Spinbox/модуля. Итак, я открываю этот файл и набираю коды так же, как Scrollbar
класс, указанный ниже.
class Scrollbar(Widget, tkinter.Scrollbar):
"""Ttk Scrollbar controls the viewport of a scrollable widget."""
def __init__(self, master=None, **kw):
"""Construct a Ttk Scrollbar with parent master.
STANDARD OPTIONS
class, cursor, style, takefocus
WIDGET-SPECIFIC OPTIONS
command, orient
"""
Widget.__init__(self, master, "ttk::scrollbar", kw)
И коды, которые я разместил в файле ttk.__init__.py
. Он наследует от tkinter.Spinbox
.
class Spinbox(Widget, tkinter.Spinbox):
"""spinbox widget."""
def __init__(self, master=None, **kw):
Widget.__init__(self, master, "ttk::spinbox", kw)
Результаты испытаний приведены ниже satisfactory.But есть отступ перед тем содержанием Spinbox Widget
tkinter.Spinbox Widget
ttk.Spinbox Widget
Есть ли что-то не так? Почему возникает отступы?
import tkinter as tk
import tkinter.ttk as ttk
class Spinbox(ttk.Widget):
def __init__(self, master, **kw):
ttk.Widget.__init__(self, master, 'ttk::spinbox', kw)
if __name__ == '__main__':
root = tk.Tk()
root.grid_columnconfigure(0, weight=1)
opts = { 'from_': 5, 'to': 10, 'increment': 1 }
sp1 = tk.Spinbox(root, from_=5, to=10)
sp1.grid(row=0, column=0)
sp2 = Spinbox(root, from_=5, to=10)
sp2.grid(row=1, column=0, columnspan=2, sticky="we",pady=2)
root.mainloop()
Если развернуть корневой ОКНО ttk.Spinbox
распространяется вместе с ним и отступы происходит. Я думаю, это связано с columnconfigure
, но мне нужна конфигурация для лучшего внешнего вида.
Ваш вопрос: «Что вы думаете о закодированных кодах»? Этот вопрос не имеет большого смысла и, вероятно, будет закрыт, поскольку он просит мнение. Кроме того, я действительно не понимаю, что означает «создать ttk.Spinbox из tkinter.Spinbox». Вы не можете создать один из другого. Во-первых, они оба уже существуют, поэтому нет причин создавать ttk.Spinbox. Вы спрашиваете, как подклассифицировать ttk.Spinbox? –
Вы серьезно относитесь к тому, что ttk имеет модуль 'Spinbox'? Я попытался запустить коды перед встраиванием паттернов в файл 'ttk .__ init__' и получил сообщение об ошибке вроде этого: 'AttributeError: 'module' object не имеет атрибута 'Spinbox''. Я задал два вопроса. Во-первых, почему возникает отступ? И во-вторых, это правда, манипулируя оригинальным 'ttk .__ init__'? – Fatih1923
Нет проблем. Вы можете сказать мне, как я могу получить пакет tcl/ttk в tkinter. Совместим ли он с python 3.4? – Fatih1923