需要了解如何在tkinter python中初始化类的帮助吗
我正在创建一个可以使用binance API进行货币交易的程序。 它按预期工作(不包括无关代码) 我的问题是,我现在希望能够在新的弹出窗口中创建几个类交易实例。我很难理解如何通过创建新的类交易实例来实现这一点。另外,我很确定我使用self:self=Trade(top)没有任何意义(即使它有效) 总而言之: 我希望能够单击一个按钮来启动Trade()的新实例,这样我就可以在同一个程序实例中同时为两个不同的交易例程使用类中的方法。怎么做 我会感激任何形式的帮助,包括建议我阅读一些东西。 如果我太傻了,我很抱歉 Thx提前需要了解如何在tkinter python中初始化类的帮助吗,python,class,tkinter,Python,Class,Tkinter,我正在创建一个可以使用binance API进行货币交易的程序。 它按预期工作(不包括无关代码) 我的问题是,我现在希望能够在新的弹出窗口中创建几个类交易实例。我很难理解如何通过创建新的类交易实例来实现这一点。另外,我很确定我使用self:self=Trade(top)没有任何意义(即使它有效) 总而言之: 我希望能够单击一个按钮来启动Trade()的新实例,这样我就可以在同一个程序实例中同时为两个不同的交易例程使用类中的方法。怎么做 我会感激任何形式的帮助,包括建议我阅读一些东西。 如果我太傻
class Trade(Frame):
stop_trading = False
amount_orders = 0
after_id = 0
def __init__(self, master=None):
Frame.__init__(self, master)
def change_orders(self):
if list_variable4.get() == 'TRUE':
if self.check_open_order() == False or self.amount_orders<2:
if self.delete_open_orders() == True and self.stop_trading != True:
self.create_orders()
...
def cron():
self.amount_orders += 1
if self.amount_orders > int(trade_cap_box.get(0.0, tk.END)):
message_window.insert(tk.END,'\nTrade Cycle Cap reached with {} trades'.format(self.amount_orders - 1))
cap_stop_trading()
if self.stop_trading != True:
message_window.insert(tk.END,'\nTrading Cycle Started{}'.format(self.amount_orders))
interval = int(rate_of_check_box.get(0.0, tk.END))
print('Trading!')
self.change_orders()
self.after_id = top.after(interval*1000*60, cron)
def start_trading():
self.amount_orders = 0
self.stop_trading = False
cron()
top = Tk()
top.geometry("600x500")
top.title('Trade Cron Job')
self = Trade(top)
message_window = Text(top, height=5, width=65)
message_window.place(x = 40,y = 10)
trading_symbol_box = Text(top, height=1, width=20)
trading_symbol_box.place(x = 200,y = 130)
default_trading_symbol = (self.config_data['configs']['symbol'])
if default_trading_symbol:
trading_symbol_box.insert(END, default_trading_symbol)
else:
trading_symbol_box.insert(END, "")
trading_symbol_labels = Label(top, text='Trading Symbol')
trading_symbol_labels.place(x = 40,y = 130)
start_value_box = Text(top, height=1, width=20)
start_value_box.place(x = 200,y = 160)
start_value_box.insert(END, 0)
start_value_labels = Label(top, text='Start Value To Progress From')
start_value_labels.place(x = 40,y = 160)
and so on...
top.mainloop()
类别交易(框架):
停止交易=错误
订单金额=0
在_id=0之后
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
def变更单(自行):
如果list_variable4.get()=“TRUE”:
如果self.check\u open\u order()==False或self.amount\u orders int(trade\u cap\u box.get(0.0,tk.END)):
消息_window.insert(tk.END,“\n交易周期上限已达到{}交易”。格式(self.amount_orders-1))
cap_stop_trading()
如果自行停止交易!=正确:
message_window.insert(tk.END,“\n阅读周期开始{}”。格式(self.amount_orders))
interval=int(rate of of the check.get(0.0,tk.END))
打印('Trading!')
self.change_orders()
self.after_id=top.after(间隔*1000*60,cron)
def start_TRANDING():
self.amount\u订单=0
self.stop_trading=False
cron()
top=Tk()
顶部几何形状(“600x500”)
top.title('Trade Cron Job')
自我=交易(顶部)
消息窗口=文本(顶部,高度=5,宽度=65)
消息窗口位置(x=40,y=10)
交易\符号\框=文本(顶部,高度=1,宽度=20)
交易箱位置(x=200,y=130)
默认交易符号=(self.config\u数据['configs']['symbol'])
如果默认交易符号:
交易符号框。插入(结束,默认交易符号)
其他:
交易符号方框。插入(结束,“”)
交易\符号\标签=标签(顶部,text='trading symbol')
交易符号标签位置(x=40,y=130)
起始值框=文本(顶部,高度=1,宽度=20)
开始值框。放置(x=200,y=160)
开始值框。插入(结束,0)
开始\u值\u标签=标签(顶部,text='start value To Progress From')
开始值标签放置(x=40,y=160)
等等
top.mainloop()
您需要创建一个Toplevel
的实例,然后将Trade
的实例添加到该窗口中
def new_window():
window = Toplevel()
trade_frame = Trade(window)
trade_frame.pack(fill="both", expand=True)
...
new_window_button = Button(top, text="New Window", command=new_window)
我对你在这里的缩进有点困惑,但有一些建议:
if self.delete\u open\u orders()==True
可以写成if self.delete\u open\u orders()
和类似的self.stop\u trading!=True
可以写为而不是self.停止交易
。关于类实例:您只需输入一个变量名并为其分配一个类,类就会被启动:var\u name=ClassName(*args,**kwargs)