【问题标题】:AttributeError: class Frame has no attribute 'StringVar'AttributeError:类 Frame 没有属性“StringVar”
【发布时间】:2017-05-29 12:23:15
【问题描述】:

所以我在下面有这段代码。我尝试了各种形式的如何开始使用 StringVar,但什么也没发生。这就是为什么转向你哦,stackoverflow之神。请告诉我如何让它通过。我在 Entry1 中有一个输入,我需要将此输入输入到一个 sql 中(由于它不重要,我将其删除)并返回它的值并将其写入原始输入的 Entry1 中。请上帝保佑我!

#!usr/bin/python
#-*- coding: utf-8 -*-

import os
import time
import mysql.connector
import getpass
import smtplib
from email.mime.text import MIMEText
global atado_kartya_input
global atvevo_kartya_input
from PIL import Image, ImageTk
#from Tkinter import Tk, Text, TOP, BOTH, X, N, LEFT
from Tkinter import * 
from Tkinter import Tk as tk
from ttk import Frame, Style, Entry, Label

class Example(Frame):
    def __init__(self, parent):

        Frame.__init__(self, parent)

        self.parent = parent
        self.initUI()
        self.addbutton()

    def addbutton(self):        
        b = Button( self, text= "Get!", width = 10, command= self.callback)
        b.pack()

    def callback(self): 
        #07561847   
        #tk()
        atvevoText = Frame.StringVar()
        atvevoText = atvevo(self.entry1.get()) #from the "atvevo" function it gets a name of a worker form an SQL statement
        self.entry1.delete(0, 'end')
        self.entry1.insert(0, atvevoText)
        #self.entry1 = Entry(self, textvariable = atvevoText )

        print(atvevoText)

    def initUI(self):
        self.parent.title("Pozi")
        self.pack(fill = BOTH, expand=True)

        frame1 = Frame(self)
        frame1.pack(fill=X)

        lbl1 = Label(frame1, text = "ĂtadĂł kártyája", width = 30)
        lbl1.pack(side = LEFT, padx=5, expand=True)

        self.entry1 = Entry(frame1)
        self.entry1.pack(side = LEFT, padx=5, expand=True)

        frame2 = Frame(self)
        frame2.pack(fill=X)

        lbl2 = Label(frame2, text = "ĂrvevĹ‘ kártyája", width = 30)
        lbl2.pack(side = LEFT, padx=5, expand=True)

        entry2 = Entry(frame2)
        entry2.pack(side = LEFT, padx=5, expand=True)

        frame3 = Frame(self)
        frame3.pack(fill=X)

        lbl3 = Label(frame3, text = "ĂrvevĹ‘ kártyája", width = 30)
        lbl3.pack(side = LEFT, padx=5, expand=True)

        entry3 = Entry(frame3)
        entry3.pack(side = LEFT, padx=5, expand=True)

        frame4 = Frame(self)
        frame4.pack(fill=BOTH, expand = True)

        lbl4 = Label(frame4, text = "Title", width = 30)
        lbl4.pack(side = LEFT, anchor=N, padx=5, pady=5)

        txt = Text(frame4)
        txt.pack(fill = BOTH, padx=5, pady=5, expand=True)      

         #Style().configure("TFrame", backgroung = "#333") # tframe háttérszinét beállítjuk90%  
def main():

    root = Tk()
    root.geometry("550x450+300+300") # width x heigth + x + y (on screen)
    app = Example(root)
    root.mainloop()  


if __name__ == '__main__':
    main()      

更新

我必须以这样的方式改变:

    def callback(self): 
        #07561847   
        #tk()
        atvevoText = StringVar()
        number = self.entry1.get()
        self.entry1.delete(0, 'end')
        #self.entry1.insert(0, atvevoText)
        self.entry1 = Entry(self, textvariable = atvevoText )
        atvevoText = atvevo(number)             
        print(atvevoText)

*有了它,我没有什么可支持的,也没有错误,也没有价值:( *

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    改变

    Frame.StringVar()
    

    StringVar()
    

    因为StringVarTkinter 中的一个类(未测试只是谷歌搜索)

    【讨论】:

    • 我得到了这个:“TclError: wrong #args: 应该是“.3040735640L.3040735640L.3040735640L 插入索引文本”
    • 请发布您有问题的完整回溯。
    • atvevoText = atvevo(self.entry1.get()) 刚刚改为 atvevoText.set = atvevo(self.entry1.get()) 并得到“PY_VAR0”
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多