2012-01-06 38 views
6

(Phiên bản Python: 3.1.1)Lỗi tkinter StringVar() của Python trên init

Tôi gặp sự cố lạ với StringVar trong tkinter. Trong khi cố gắng liên tục giữ một tiện ích Message được cập nhật trong một dự án, tôi vẫn gặp lỗi khi cố tạo biến. Tôi đã nhảy ra một vỏ trăn tương tác để điều tra và đây là những gì tôi nhận được:

>>> StringVar 
<class 'tkinter.StringVar'> 
>>> StringVar() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python31\lib\tkinter\__init__.py", line 243, in __init__ 
    Variable.__init__(self, master, value, name) 
    File "C:\Python31\lib\tkinter\__init__.py", line 174, in __init__ 
    self._tk = master.tk 
AttributeError: 'NoneType' object has no attribute 'tk' 
>>> 

Bất kỳ ý tưởng nào? Mỗi ví dụ tôi đã thấy trên Tkinter chương trình sử dụng khởi tạo các biến không có gì gửi đến các nhà xây dựng vì vậy tôi đang ở một mất mát nếu tôi thiếu cái gì ...

Trả lời

10

StringVar cần một bậc thầy:

>>> StringVar(Tk()) 
<Tkinter.StringVar instance at 0x0000000004435208> 
>>> 

trở lên thông thường:

>>> root = Tk() 
>>> StringVar() 
<Tkinter.StringVar instance at 0x0000000004435508> 

Khi bạn khởi tạo Tk một trình thông dịch mới được tạo. Trước đó không có gì hoạt động:

>>> from Tkinter import * 
>>> StringVar() 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 251, in __init__ 
    Variable.__init__(self, master, value, name) 
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 182, in __init__ 
    self._tk = master.tk 
AttributeError: 'NoneType' object has no attribute 'tk' 
>>> root = Tk() 
>>> StringVar() 
<Tkinter.StringVar instance at 0x00000000044C4408> 

Vấn đề với các ví dụ bạn thấy là có lẽ trong các tài liệu họ hiển thị các đoạn chỉ một phần mà có nghĩa vụ phải được bên trong một lớp học hoặc trong một chương trình dài hơn để nhập khẩu và mã khác không được chỉ định rõ ràng.

Các vấn đề liên quan