python - 需要帮助了解如何在 tkinter python 中初始化类
问题描述
我正在创建一个可以使用 binance API 进行货币交易的程序。它按预期工作(不包括不相关的代码)我的问题是我现在想要在新的弹出窗口中创建类 Trade 的多个实例。在创建 Trade 类的新实例方面,我无法理解如何实现这一点。此外,我很确定我对 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()
解决方案
您需要创建 的实例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)
推荐阅读
- javascript - laravel ajax 返回连接表的整个对象
- apache - .htaccess 参数问题
- c# - 如何使用 c# 在 razor pay 中发起退款
- list - 打印文本中出现频率最高的值
- java - 如何使用 POI 在给定段落之前插入 sdt?
- java - 休眠映射异常错误:未知实体
- ruby-on-rails - 单个外键引用多个表 [Rails6]
- python - SQLAlchemy - 如何序列化自动加载的模型?
- heroku - 在 heroku 上部署一个 MERN 应用程序,带有两个单独的文件夹
- html - 在 Flutter 中的 iOS 上 WebView 显示太小和最小化