Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.4/Tkinter跨类变量访问_Python_Tkinter - Fatal编程技术网

Python 3.4/Tkinter跨类变量访问

Python 3.4/Tkinter跨类变量访问,python,tkinter,Python,Tkinter,错误: __author__ = 'rvncpn' import tkinter from tkinter import ttk class layOut(tkinter.Tk): volts = 0 amps = 0 ohms = 0 def updizzle(self): layOut.volts = layOut.ve.get() layOut.amps = layOut.ie.get() layOut

错误:

__author__ = 'rvncpn'

import tkinter
from tkinter import ttk


class layOut(tkinter.Tk):
    volts = 0
    amps = 0
    ohms = 0

    def updizzle(self):
        layOut.volts = layOut.ve.get()
        layOut.amps = layOut.ie.get()
        layOut.ohms = layOut.re.get()

    def __init__(self, *args, **kwargs):
        tkinter.Tk.__init__(self, *args, **kwargs)
        container = ttk.Frame(self)
        container.grid(columns=3, rows=3, sticky='nsew')
        tkinter.Tk.title(self, 'Ohms Law v2')

        v = ttk.Label(container, text='Volts')
        v.grid(column=0, row=0)

        i = ttk.Label(container, text='Amperes')
        i.grid(column=1, row=0)

        r = ttk.Label(container, text='Ohms')
        r.grid(column=2, row=0)

        ve = ttk.Entry(container)
        ve.grid(column=0, row=1)

        ie = ttk.Entry(container)
        ie.grid(column=1, row=1)

        re = ttk.Entry(container)
        re.grid(column=2, row=1)

        button = ttk.Button(container, text='Button', command=layOut.updizzle)
        button.grid(column=2, row=2,pady=6)

        answer = ttk.Label(container, text='32095782hirjfkebfesfme')
        answer.grid(column=0, row=2, columnspan=2)


class ohms(layOut):
    def __init__(self):
        self.v = layOut.volts
        self.i = layOut.amps
        self.r = layOut.ohms
        self.w = []

    def sorter(self):
        if self.v > 0:
            self.w.append('volts')
        if self.i > 0:
            self.w.append('amps')
        if self.r > 0:
            self.w.append('ohms')

    def listCheck(self):
        if 'volts' in self.w and 'amps' in self.w and 'ohms' in self.w:
            print('you must leave one of the perimeter empty')
        elif 'volts' in self.w and 'amps' in self.w:
            print('resistance =', self.v / self.i)
        elif 'volts' in self.w and 'ohms' in self.w:
            print('amps =', self.i / self.i)
        elif 'amps' in self.w and 'ohms' in self.w:
            print('volts=', self.i * self.r)
        else:
            pass


app = layOut()
app.mainloop()
在我的生活中,我无法理解这一点,我知道这将是一件简单的事情,我要踢自己。

您正在使用未绑定方法,您应该使用
self
创建绑定方法。替换:

TypeError: updizzle() missing 1 required positional argument: 'self'
与:

请注意,这些项都没有存储在实例或类中;没有设置
layOut.ve
layOut.ie
layOut.re
,因为您将
ve
ie
re
作为本地人离开。最好在实例上设置它们(如此类推
self
),然后在
updizle
中再次在
self
上查找它们:

button = ttk.Button(container, text='Button', command=self.updizzle)
你真的应该发布完整的回溯,而不仅仅是例外。你能试着把这个问题简化成一个小样本吗?代码应该做什么?
button = ttk.Button(container, text='Button', command=self.updizzle)
class layOut(tkinter.Tk):
    volts = 0
    amps = 0
    ohms = 0

    def updizzle(self):
        self.volts = self.ve.get()
        self.amps = self.ie.get()
        self.ohms = self.re.get()

    def __init__(self, *args, **kwargs):
        tkinter.Tk.__init__(self, *args, **kwargs)
        container = ttk.Frame(self)
        container.grid(columns=3, rows=3, sticky='nsew')
        tkinter.Tk.title(self, 'Ohms Law v2')

        v = ttk.Label(container, text='Volts')
        v.grid(column=0, row=0)

        i = ttk.Label(container, text='Amperes')
        i.grid(column=1, row=0)

        r = ttk.Label(container, text='Ohms')
        r.grid(column=2, row=0)

        self.ve = ttk.Entry(container)
        self.ve.grid(column=0, row=1)

        self.ie = ttk.Entry(container)
        self.ie.grid(column=1, row=1)

        self.re = ttk.Entry(container)
        self.re.grid(column=2, row=1)

        button = ttk.Button(container, text='Button', command=layOut.updizzle)
        button.grid(column=2, row=2,pady=6)

        answer = ttk.Label(container, text='32095782hirjfkebfesfme')
        answer.grid(column=0, row=2, columnspan=2)