很抱歉发布这样一个奇怪的问题,通常当我感到困惑时,我只是"随身携带",直到我有一个顿悟,然后将其排除,但def __init__(self):在我的课堂内调用似乎完全是多余的,似乎将它留下来也是如此:
class Pet(object):
type_of_pet = ""
number_of_legs = 0
name = ""
Run Code Online (Sandbox Code Playgroud)
让我创建:
fred = pet()
fred.type_of_pet = "alligator"
Run Code Online (Sandbox Code Playgroud)
就像我要把类更改为:
class Pet(object):
def __init__(self):
type_of_pet = ""
alice = Pet()
alice.type_of_pet = "Pterodactyl"
Run Code Online (Sandbox Code Playgroud)
我只是没有得到我需要的原因__init__,而这里的其他线程并不像我希望的那样清晰.有什么我可以做到这个"点击"?
我一直在慢慢学习 Tkinter 和面向对象编程,但我已经把自己编程到了这个角落。请原谅我对这个问题缺乏批判性思维,但我已经问过我认识的每个比我更了解 Python 的人,我们无法在这里找到可行的解决方案。
我有一个正在开发的 gui 应用程序,旨在允许用户输入股票代码,为每个代码创建新标签,然后定期更新每个标签。(有点像一个非常基本的 etrade 应用程序或其他东西)。我发现在没有 gui 的情况下很容易做到这一点,因为我可以说:
while True:
sPrice = get_stock_price(s)
print sPrice
Run Code Online (Sandbox Code Playgroud)
但我已将我的 get_stock_price(s) 函数绑定到一个按钮,该按钮会生成一个子框架和一个包含在其中的标签。我遇到的问题是标签不会更新。一个朋友建议添加另一种方法来更新标签,但是我知道如何持续更新它的唯一方法是做一个
while True:
# get new price
# update the label
# time.sleep(~1 minute?)
Run Code Online (Sandbox Code Playgroud)
这会导致我的 gui 窗口永远冻结和旋转。我一直在阅读与此特定情况相关的所有其他线程,并且看到了许多不同的建议;不要在主线程中调用 sleep,不要使用 root.update,使用事件,调用 root.something.after(500, function) 并且我已经尝试实现。我留下的是一个科学怪人的代码,它仍然会检索我的股票价值,但不会更新它们,以及一些我不知道如何更新或在我的代码中调用的方法。
我希望的是(可能很长,我知道。对不起!)对我做错了什么的解释,以及如何解决它的建议。我真的很想自己理解和解决这个问题,但是只要解释了代码解决方案就会很棒。
非常感谢提前!!!
PS:这是我到目前为止的代码:
from Tkinter import *
import urllib
import re
import time
class MyApp(object):
def __init__(self, parent):
self.myParent = parent
self.myContainer1 = Frame(parent)
self.myContainer1.pack()
self.createWidgets()
button1 = Button(self.myContainer1, command = self.addStockToTrack)
self.myContainer1.bind("<Return>", self.addStockToTrack)
button1.configure(text = "Add …Run Code Online (Sandbox Code Playgroud)