- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在开发满足自己需求的GUI时遇到了一些麻烦。我正在使用Tkinter和Python,并且已经复习了关于该主题的所有内容,但均未成功。
所以这是我的情况:
背景
我正在开发一个可控制的环境,以维持用户设定的温度和压力。我有一个相当广泛的程序,该程序编写并用于控制和记录压力分量。基本上,它使用线程来同时获取用户输入,控制执行器,记录数据以及仅用于压力的所有操作。最初的目的是对温度进行现场检查,然后从那里进行检查。在开发过程中,很明显,同时记录和显示温度比不这样做更有用。用热电偶测量温度,然后通过DAQ分配温度以获取该数据。我是一名工程师,所以编程不是我的本性,但是我已经完成了一些在线python教程,并且相信对这种语言具有“实际的”知识(松散地使用)。
程序
因此,我着手开发现有程序的新部分。我使用和开发的功能似乎可以满足我的需求。我可以访问DAQ上的所需端口,读取和存储值,并使用导入的功能转换电压(又名,我知道它可以工作)。我目前已将其配置为打印每个值,以便可以检查这些值,并对命令行中的结果感到满意。我将此功能开发为一个单独的程序,该程序将集成到现有程序中,但是由于一些时髦的硬件限制,它是这样做的,但是现在,我正在研究的只是它自己的程序。
现在,问题是:
所以我有工作功能,但需要将它们集成到我的GUI中。如果可以使用,GUI将仅显示一个按钮“ get temp”,并标记“ Temperature:XX”,其中XX将显示程序检索和转换的温度。我的问题与XX值的更新有关。我能够运行必要的功能并将结果存储到变量中,但似乎无法弄清楚如何显示和更新它。我已经在Tkinter上阅读了.get()和.set(value),但是还无法通过几次迭代使它起作用。我得到的最接近的温度是0.0或PY_VARXX。 GUI如下所示
图形用户界面
我怀疑我的问题可能与程序的结构有关。生成GUI的代码在这里:
import LabJackPython
import u3
import sys
import getopt
from threading import Thread
from time import time, sleep
from Tkinter import Tk, Frame, Button, Toplevel, Label, Entry, StringVar, DoubleVar
import tkMessageBox
from datetime import datetime, date
#define global variables
v1 = None
g_get = None
Gain = None
GainE = None
VoltE = None
g_Conv = None
vv1 = None
vr1 = None
v2 = None
vread = None
CJT = None
T1 = None
T1C = None
#configure DAQ
d = u3.U3()
d.configIO(FIOAnalog = 12)
#define functions
#voltage to temperature conversion
def VTT(v, voff, gain):
global v1, T1, vread, CJT, Gain
vread = d.getAIN(2)
v = vread
CJT = d.getTemperature()
gain
if v > 14.9:
print "Invalid Input"
else:
v1 = (v - voff)/gain
T1 = LabJackPython.TCVoltsToTemp(LabJackPython.LJ_ttJ, v1, CJT)
print "vread:", vread
print "v:", v
print "v1:", v1
print "CJT:", CJT
print "T1 (K):", T1
#run VTT on button click with fixed values
def assign(event):
global T1C
VTT(1, 1.25, 201)
T1C = T1 - 273.15
print "T (C):", T1C
#initiate GUI
def main():
global v1, T1, vread, CJT, Gain
root = Tk()
root.title("Temp")
Temp = Frame(root)
Temp.grid()
TempL = Label(Temp, text = "Temperature:", font = 20)
TempL.grid(row = 4, column = 0)
#Define variables
T1C = DoubleVar()
T1C1 = DoubleVar()
T1C1.set(T1C)
#variable
Temperature = Label(Temp, textvariable = T1C1, font = 20)
Temperature.grid(row = 4, column = 1)
#button
g_get = Button(Temp, text = "get temp", height = 2, width = 10)
g_get.bind("<Button-1>", assign)
g_get.grid(row = 2, column = 0)
try:
root.mainloop ()
except KeyboardInterrupt:
print "Keyboard Interrupt Caught!"
exit()
最佳答案
快速解决方案:
通过重新分配另一个值,原样的代码“破坏”了保存在DoubleVar()
内T1C
变量中的准全局assign()
。
assign(event):
global T1C
VTT(1, 1.25, 201)
T1C = T1 - 273.15 # shall rather read T1C.set( T1 - 273.15 )
print "T (C):", T1C # shall rather read print "T [C]:", T1C.get()
<controller>
-part device-read-ing和
<model>
变量的
<state>
部分(重复使用和受保护的全班级)
<visual>
-part层
global
变量(可以并且应该依赖Class-instance变量“在内部”是它自己的封装容器……没有其他错误/错误/错误将破坏您的控制值)
关于python - 使用Python更新GUI中显示的值:已修订(新困难),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25673848/
tuple :: (Integer a,Fractional b) => (a,b,String) tuple = (18,5.55,"Charana") 所以这是给我的错误 ‘Integer’ is
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
我已经习惯了python和django,但我最近开始学习java。由于工作原因我没有太多时间,所以错过了很多类(class),现在我有点困惑,我必须做作业。 编辑 该程序应该根据每个运动员在自行车和比
这是一个困难的问题,但对专业人士来说很容易。 我在 mysql 中有以下字段:产品名称、mycost、sellprice 和 stock。因为我需要知道每种产品对我的商店的投资有多少,所以我创建了以下
我有 3 个表,其中已包含以下行: TBL_TESTER_LIST id tester_type tester_name 1 LMX LMX-01 2 LMX
我想只使用 GridBagLayout 来布局组件,如图所示。 我已经尝试了几个约束,但它永远不会以预期的结果结束,所以我想知道仅使用 GridBagLayout 是否真的可行。难点在于C1、C2、C
我遇到了以下代码没有结果的问题。但是,如果我取消注释掉指定的行,并注释掉它起作用的 bind_param 行,但这不是破坏了 mysqli 的目的吗?我的 var_dump 给了我的字符串(1)“1”
这个问题在这里已经有了答案: a good python to exe compiler? [closed] (3 个答案) 关闭 9 年前。 有了我之前问题的一些有用答案(见下文),我决定再试一次
我正在使用 Hadoop 分析 GSOD 数据 (ftp://ftp.ncdc.noaa.gov/pub/data/gsod/)。我选择了 5 年来执行我的实验 (2005 - 2009)。我配置了一
我在我的 macOS 应用程序的设置面板中使用 NSGridView。我是这样设置的: class GeneralViewController: RootViewController { pr
我正在尝试使用以下代码在 PHP 中自动安装 WordPress 发行版: $base_dir = '/home/username/wordpress_location'; chdir($base_d
在 Node.js 中将图像转换为 Base64 字符串时,我遇到了一个非常令人困惑的问题 这是我的示例代码: app.get('/image', (req, res) => { ServerAP
我在尝试运行我的应用程序时遇到一些错误,这里是 logcat java.lang.RuntimeException: Unable to instantiate activity Componen
基本上,我正在努力创建一个管理团队和球员的 Java 程序。 根据我的理解,我会有一个团队和一个玩家类。在团队类中会有 get 和 set 方法,以及某种形式的集合来正确存储球员,例如数组列表?然后在
我仍在尝试找出 JavaSwing 中的 BorderLayout,这真的很令人沮丧。 我希望能够将一个 Pane 拆分为 3 个包含的子面板,但我不完全确定如何包含它。 这是我的游戏类,它包含面板
下面的表设计(完整的模式见下文)还有很多需要改进的地方,并且已经造成了许多困难,但是我无法找出如何最好地将它们规范化。这些表格的目的是: ICD9-提供CICD9和CDESC组合的主查找。每个组合在I
这是我的表格: AB元组表 C 表,其中包含 A.id 和 B.id 的条目 D 表,其中包含带有 C.id 的条目和一个 bool 字段“open” 我想计算 D 表中“open”= true 且具
我在 YouTube 上跟踪了一个相当旧的教程,在视频中他以这种方式使用了 mysql_result: return (mysql_result($result,0) == 1) ? true : f
我正在尝试创建一个左侧面板的页面。该面板有一个页眉、一个内容区域和一个页脚。主面板包装器 div 应该是页面高度的 100%。页眉和页脚没有指定的高度,因为我只希望它们足够大以容纳其文本和填充,而我希
我有 TreeView ,我想在其中显示用户通过 file_dialog.getOpenFileNames() 选择的文件; file_dialog 是 QFileDialog。我确实创建了模型类:
我是一名优秀的程序员,十分优秀!