在tkinter.ttk中缺少ttk.Spinbox?

Sun*_*ear 2 python tkinter

我正在使用的tkinter版本是访问tk.TclVersion = 8.6.

我可以从中访问stylename ='TSpinbox' ttk.Style().

Stylename = TSpinbox
Layout    = [('Spinbox.field', {'side': 'top', 'sticky': 'we', 'children': [('null', {'side': 'right', 'sticky': '', 'children': [('Spinbox.uparrow', {'side': 'top', 'sticky': 'e'}), ('Spinbox.downarrow', {'side': 'bottom', 'sticky': 'e'})]}), ('Spinbox.padding', {'sticky': 'nswe', 'children': [('Spinbox.textarea', {'sticky': 'nswe'})]})]})]
Element(s) = ['Spinbox.field', 'null', 'Spinbox.uparrow', 'Spinbox.downarrow', 'Spinbox.padding', 'Spinbox.textarea']
Spinbox.field                  options: ('fieldbackground', 'borderwidth')
null                           options: ()
Spinbox.uparrow                options: ('background', 'relief', 'borderwidth', 'arrowcolor', 'arrowsize')
Spinbox.downarrow              options: ('background', 'relief', 'borderwidth', 'arrowcolor', 'arrowsize')
Spinbox.padding                options: ('padding', 'relief', 'shiftrelief')
Spinbox.textarea               options: ('font', 'width')
Run Code Online (Sandbox Code Playgroud)

根据文档,小部件ttk.Spinbox存在.但是在Python 3.6.5中tkinter.ttk,这样的小部件不存在:

AttributeError: module 'tkinter.ttk' has no attribute 'Spinbox'
Run Code Online (Sandbox Code Playgroud)

我可以知道这个小部件何时可用或哪个版本的Python tkinter.ttk已经提供了ttk.Spinbox小部件?谢谢.

fhd*_*sdg 7

你是对的,省略了ttk Spinbox的实现.这已经解决了python 3.7.

您可以复制此实现来自己完成此操作:

import tkinter as tk
from tkinter import ttk

class Spinbox(ttk.Entry):

    def __init__(self, master=None, **kw):

        ttk.Entry.__init__(self, master, "ttk::spinbox", **kw)
    def set(self, value):
        self.tk.call(self._w, "set", value)

root = tk.Tk()
s = Spinbox(root, from_=0, to=10)
s.set(5)
s.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

  • 是的,这也有效,我直接从 [git commit](https://github.com/python/cpython/commit/105fcbfd6a91abea0ecd71e53651f39ad6f6039b) 获得了我发布的代码,因此它的工作方式与在 python 3.7 中完全一样。 (2认同)