gpt4 book ai didi

Python - tkinter 'AttributeError: ' NoneType' 对象没有属性 'xview' '

转载 作者:太空宇宙 更新时间:2023-11-04 07:20:16 26 4
gpt4 key购买 nike

我正在尝试在 DISABLED Entry 小部件上放置一个滚动条。但是,它不断出现错误 AttributeError: 'NoneType' object has no attribute 'xview'。是因为没有返回值还是无论是否返回值都应该显示小部件?

下面是我的程序的代码;我已经注释掉了滚动条的代码:

from tkinter import *
from tkinter import ttk

def calculate(*args):
try:
value = int(binary.get(), 2)
except ValueError:
pass

decimal.set(value)

root = Tk()
root.title("Binary to Decimal Converter")
root.wm_iconbitmap("python-xxl.ico")

mainframe = ttk.Frame(root, padding = "3 3 12 12")
mainframe.grid(column = 0, row = 0, sticky = (N, W, E, S))
mainframe.columnconfigure(0, weight = 1)
mainframe.rowconfigure(0, weight = 1)

binary = StringVar()
decimal = StringVar()

binary_entry = ttk.Entry(mainframe, width = 30, textvariable = binary)
binary_entry.grid(column = 2, row = 1, sticky = (W, E))

decimalView = ttk.Entry(mainframe, state = DISABLED, background = "gray99", width = 30, textvariable = decimal).grid(column = 2, row = 2, sticky = W)
"""scrollbar = Scrollbar(mainframe, orient = HORIZONTAL, command = decimalView.xview)
scrollbar.grid(column = 2, row = 3, sticky = (N, S, E, W))
decimalView.config(command = scrollbar.set)"""
ttk.Button(mainframe, text = "Calculate", command = calculate).grid(column = 3, row = 3, sticky = W)

ttk.Label(mainframe, text = "Binary").grid(column = 3, row = 1, sticky = W)
ttk.Label(mainframe, text = "Decimal").grid(column = 3, row = 2, sticky = W)

for child in mainframe.winfo_children():
child.grid_configure(padx = 5, pady = 5)

binary_entry.focus()
root.bind("<Return>", calculate)

root.mainloop()

最佳答案

问题是 grid 返回 None,而不是 self

所以,当你这样做时:

decimalView = ttk.Entry(mainframe, state = DISABLED, background = "gray99", width = 30, textvariable = decimal).grid(column = 2, row = 2, sticky = W)

…您正在将 decimalView 设置为 None。这就是错误消息告诉您无法在 None 上找到 xview 属性的原因。

这不是 Tkinter 的怪癖; Python 中几乎所有以任何方式改变对象的方法都从 list.sort 返回 None(或者,有时,返回一些其他有用的值——但从不返回 self) file.write

只需要写两行:构建Entry并将其赋给decimalView,然后grid它。

除了拥有工作代码的小好处外,您还将拥有更具可读性的代码,这些代码不会在 StackOverflow 或大多数文本编辑器上滚动到屏幕右侧。

关于Python - tkinter 'AttributeError: ' NoneType' 对象没有属性 'xview' ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21255216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com