用Python中的无线电按钮值计算
这是我在这里的第一个问题,希望我能做的一切正确。我必须编写一个课程以进行学习,并在没有先验知识的情况下学习了Python,因此我遇到了一些我通常独自解决的问题,但我坐在这个问题上了一个星期。具体来说,我想计算不同的开销线的SAG。为此,我已经开发了一个使用TKINTER的用户界面,并借助无线电按钮选择了不同的开销线类型。我已经为每个开销线路分配了一个值,现在我希望在按“绘制”按钮时,将显示下垂,具体取决于选择。但是,我不知道如何使计算取决于单选按钮的值。 这是我到目前为止的代码:
self.button_1 = ctk.CTkButton(master=self.frame_left, text="Zeichnen\n"+"Seitenansicht", fg_color=("gray75", "gray30"), command = self.calculate_sag)
self.button_1.grid(row=2, column=0, pady=10, padx=20)
...
self.radio_var = tkinter.IntVar(value=0)
self.radio_button_1 = ctk.CTkRadioButton(master=self.frame_right, text='Re 100', variable=self.radio_var, value=1)
self.radio_button_1.grid(row=1, column=2, pady=10, padx=20, sticky="n")
self.radio_button_2 = ctk.CTkRadioButton(master=self.frame_right, text='Re 200', variable=self.radio_var, value=2)
self.radio_button_2.grid(row=2, column=2, pady=10, padx=20, sticky="n")
self.radio_button_3 = ctk.CTkRadioButton(master=self.frame_right, text='Re 330', variable=self.radio_var, value=3)
self.radio_button_3.grid(row=3, column=2, pady=10, padx=20, sticky="n")
self.radio_button_4 = ctk.CTkRadioButton(master=self.frame_right, text='Sicat S 1.0', variable=self.radio_var, value=4)
self.radio_button_4.grid(row=4, column=2, pady=10, padx=20, sticky="n")
self.radio_button_5 = ctk.CTkRadioButton(master=self.frame_right, text='Sicat H 1.0', variable=self.radio_var, value=5)
self.radio_button_5.grid(row=5, column=2, pady=10, padx=20, sticky="n")
我尝试了通过无线电按钮选择的计算代码:
def calculate_sag(self):
if (self.radio_var.get() == 1):
sag_value = []
nachspannlaenge = list(range(data[0]['nachspannlaenge']))
for x in range(data[0]['nachspannlaenge']):
sag = 5.50 - ((data[0]['gewicht_tragseil']/(8*data[0]['zugkraft_tragseil']))*(x*(data[0]['nachspannlaenge']-x)))
sag_value.append(sag)
plt.plot(nachspannlaenge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
if (self.radio_var.get() == 2):
sag_value = []
nachspannlaenge = list(range(data[1]['nachspannlaenge']))
for x in range(data[1]['nachspannlaenge']):
sag = 5.50 - ((data[1]['gewicht_tragseil']/(8*data[1]['zugkraft_tragseil']))*(x*(data[1]['nachspannlaenge']-x)))
sag_value.append(sag)
plt.plot(nachspannlaenge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
但是我收到以下错误消息:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\username\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\customtkinter\widgets\ctk_radiobutton.py", line 279, in variable_callback
if self.variable.get() == self.value:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 547, in get
return int(self._tk.getdouble(value))
_tkinter.TclError: expected floating-point number but got ""
因为我读到这与我的INTVAR
有关如果我在self.button_1处只有一个高架线的计算,就会发生:
self.button_1 = ctk.CTkButton(master=self.frame_left, text="Zeichnen\n"+"Seitenansicht", fg_color=("gray75", "gray30"), command = self.calculate_sag)
self.button_1.grid(row=2, column=0, pady=10, padx=20)
...
def sag_re_100(G=data[0]['gewicht_tragseil'], H=data[0]['zugkraft_tragseil'], l=data[0]['nachspannlaenge']):
sag_value = []
nachspannlänge = list(range(data[0]['nachspannlaenge']))
for x in range(data[0]['nachspannlaenge']):
sag = 5.50 - ((G/(8*H))*(x*(l-x)))
sag_value.append(sag)
plt.plot(nachspannlänge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
我的整个程序可以在此处找到: https://pastebin.com/an8afa92
这是JSON文件,我将我的信息存储在: https://pastebin.com/wrdwkkrw
我如何根据广播按钮的值进行计算?
This is my first question here and I hope I do everything right. I have to write a program for my studies and learned python without prior knowledge thus I face some problems I usually solved alone but I am sitting on this issue for a week. Specifically, I want to calculate the sag for different overhead lines. For this I have developed a user interface with tkinter and with the help of radio buttons the different overhead line types are to be selected. I have assigned a value to each overhead line and now I want that when I press the button "draw", the sag is displayed depending on the selection. However, I don't know exactly how to make the calculation dependent on the value of the radio button.
Here is my code so far:
self.button_1 = ctk.CTkButton(master=self.frame_left, text="Zeichnen\n"+"Seitenansicht", fg_color=("gray75", "gray30"), command = self.calculate_sag)
self.button_1.grid(row=2, column=0, pady=10, padx=20)
...
self.radio_var = tkinter.IntVar(value=0)
self.radio_button_1 = ctk.CTkRadioButton(master=self.frame_right, text='Re 100', variable=self.radio_var, value=1)
self.radio_button_1.grid(row=1, column=2, pady=10, padx=20, sticky="n")
self.radio_button_2 = ctk.CTkRadioButton(master=self.frame_right, text='Re 200', variable=self.radio_var, value=2)
self.radio_button_2.grid(row=2, column=2, pady=10, padx=20, sticky="n")
self.radio_button_3 = ctk.CTkRadioButton(master=self.frame_right, text='Re 330', variable=self.radio_var, value=3)
self.radio_button_3.grid(row=3, column=2, pady=10, padx=20, sticky="n")
self.radio_button_4 = ctk.CTkRadioButton(master=self.frame_right, text='Sicat S 1.0', variable=self.radio_var, value=4)
self.radio_button_4.grid(row=4, column=2, pady=10, padx=20, sticky="n")
self.radio_button_5 = ctk.CTkRadioButton(master=self.frame_right, text='Sicat H 1.0', variable=self.radio_var, value=5)
self.radio_button_5.grid(row=5, column=2, pady=10, padx=20, sticky="n")
I tried the following code for my calculations with the selection through the radio buttons:
def calculate_sag(self):
if (self.radio_var.get() == 1):
sag_value = []
nachspannlaenge = list(range(data[0]['nachspannlaenge']))
for x in range(data[0]['nachspannlaenge']):
sag = 5.50 - ((data[0]['gewicht_tragseil']/(8*data[0]['zugkraft_tragseil']))*(x*(data[0]['nachspannlaenge']-x)))
sag_value.append(sag)
plt.plot(nachspannlaenge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
if (self.radio_var.get() == 2):
sag_value = []
nachspannlaenge = list(range(data[1]['nachspannlaenge']))
for x in range(data[1]['nachspannlaenge']):
sag = 5.50 - ((data[1]['gewicht_tragseil']/(8*data[1]['zugkraft_tragseil']))*(x*(data[1]['nachspannlaenge']-x)))
sag_value.append(sag)
plt.plot(nachspannlaenge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
However I receive the following error message:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\username\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\customtkinter\widgets\ctk_radiobutton.py", line 279, in variable_callback
if self.variable.get() == self.value:
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.3568.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 547, in get
return int(self._tk.getdouble(value))
_tkinter.TclError: expected floating-point number but got ""
For that I read that it has to do with my IntVar
The error does not happen if I have the calculation for only one overhead line at self.button_1 at command, like here:
self.button_1 = ctk.CTkButton(master=self.frame_left, text="Zeichnen\n"+"Seitenansicht", fg_color=("gray75", "gray30"), command = self.calculate_sag)
self.button_1.grid(row=2, column=0, pady=10, padx=20)
...
def sag_re_100(G=data[0]['gewicht_tragseil'], H=data[0]['zugkraft_tragseil'], l=data[0]['nachspannlaenge']):
sag_value = []
nachspannlänge = list(range(data[0]['nachspannlaenge']))
for x in range(data[0]['nachspannlaenge']):
sag = 5.50 - ((G/(8*H))*(x*(l-x)))
sag_value.append(sag)
plt.plot(nachspannlänge, sag_value)
plt.title('Durchhang für die (Oberleitungsbauart einfügen)')
plt.xlabel('Nachspannlänge (m)')
plt.ylabel('Fahrdrahthöhe (m)')
plt.ylim() # changes the minimum value of the y axes
plt.show()
My entire program can be find here:
https://pastebin.com/an8Afa92
And this is the json file I store my information in:
https://pastebin.com/WrDwKKrW
How can I make the calculation depending on the value of the radio button?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论