[英]Disconnect Multiple input at once in two entry widgets (tkinter)
我需要使用 tkinter 為 Raspberry Pi 編寫一個 GUI(觸摸屏)。 我有兩個條目小部件,我需要分別輸入。 不幸的是,當我在小鍵盤上輸入一個值時,兩個條目都被寫入了。 如何更改它,我只能在選定的條目小部件中輸入一個值? 我假設問題出在 press function 和 expression.. 部分? 而且我的退出按鈕也不會關閉我的 window...?
謝謝您的幫助!
這是我的代碼:
import sys
import time
import struct
import select
import signal
import subprocess
import os
import shared
from tkinter import *
import tkinter
import time
ug = 0 #lower bound [cm]
og = 41 #Nutzbare höhe Wassertank [cm]
run = 0
run1 = 1
xdis = 1
ydis = 1
# globally declare the expression variable
expression = ""
# Function to update expression in the text entry box
def press(num):
global expression
expression = expression + str(num)
equation.set(expression)
def clear():
global expression
expression = ""
equation.set("")
#create GUI
if __name__ == "__main__":
# create a GUI window
gui = Tk()
gui.title("GUI")
equation = StringVar()
#Label 1
label1 = tkinter.Label(text ="Pumpenhöhe 1")
label1.grid (row =0 , column =0 , padx = xdis , pady = ydis )
#Eingabefeld 1 definieren
eingabe1 = tkinter.Entry(gui, textvariable=equation, width=4, bg ='#ffffff')
eingabe1.grid(row=0, column=1, padx=xdis, pady = ydis)
eingabe1.focus_set()
#Label 2
label2 = tkinter.Label (text ="Pumpenhöhe 2")
label2.grid(row=1,column =0 , padx = xdis ,pady = ydis)
#Eingabefeld 2
eingabe2 = tkinter.Entry(gui, textvariable=equation, width=4, bg ='#ffffff')
eingabe2.grid(row=1, column=1, padx=xdis, pady = ydis)
#button obj to start thread
start_thread = tkinter.Button(text ="start thread(main loop)", command=start_thread)
start_thread.grid(row=2, column=1, padx=xdis, pady = ydis)
#button obj on framework to start thread
set_setpoints = tkinter.Button(text ="Send", command = set_setpoints)
set_setpoints.grid(row=2, column=2, padx= xdis, pady = ydis)
#create exit button
ex_bt = tkinter.Button(gui, text='Exit', command=gui.quit)
ex_bt.grid(row=7, column=2, sticky=tkinter.W, padx=xdis, pady=ydis)
#buttons for numpad
.
.
.
clear = Button(gui, text='Clear',
command=clear, height=1, width=7)
clear.grid(row=6, column='1')
Decimal= Button(gui, text='.',
command=lambda: press('.'), height=1, width=7)
Decimal.grid(row=6, column=2)
gui.mainloop()
這是我的新代碼,它不起作用:
'''
def press(num):
global expression
expression = expression + str(num)
equation.set(expression)
def clear():
global expression
expression = ""
equation1.set("")
equation2.set("")
#create GUI
# Driver code
if __name__ == "__main__":
# create a GUI window
gui = Tk()
gui.title("GUI")
equation1 = StringVar()
equation2 = StringVar()
equation1.set("")
equation2.set("")
#Label 1
label1 = tkinter.Label(text ="Pumpenhöhe 1")
label1.grid (row =0 , column =0 , padx = xdis , pady = ydis )
#Eingabefeld 1 definieren
eingabe1 = tkinter.Entry(gui, textvariable=equation1, width=4, bg ='#ffffff')
eingabe1.grid(row=0, column=1, padx=xdis, pady = ydis)
eingabe1.focus_set()
#Label 2
label2 = tkinter.Label (text ="Pumpenhöhe 2")
label2.grid(row=1,column =0 , padx = xdis ,pady = ydis)
#Eingabefeld 2
eingabe2 = tkinter.Entry(gui, textvariable=equation2, width=4, bg ='#ffffff')
eingabe2.grid(row=1, column=1, padx=xdis, pady = ydis)
'''
正如你問了多個問題。 我將嘗試明智地回答問題。
我有兩個條目小部件,我需要單獨輸入。 不幸的是,當我在小鍵盤上輸入一個值時,這兩個條目都被寫入了。 如何更改它,我只能在已選擇的條目小部件中輸入一個值? [Piyush] 兩個條目小部件使用了相同的文本變量(方程式),因為兩個條目小部件是獨立的,因此兩個條目小部件應使用不同的文本變量。 我已經編輯了下面提到的兩個條目小部件的代碼 -
equation1 = StringVar() equation2 = StringVar() equation1.set("") equation2.set("") #Label 1 label1 = tkinter.Label(text ="Pumpenhöhe 1") label1.grid (row =0, column =0, padx = xdis, pady = ydis ) #Eingabefeld 1 definieren eingabe1 = tkinter.Entry(gui, textvariable=equation1, width=4, bg ='#ffffff') eingabe1.grid(row=0, column=1, padx=xdis, pady = ydis) eingabe1.focus_set() #Label 2 label2 = tkinter.Label (text ="Pumpenhöhe 2") label2.grid(row=1,column =0, padx = xdis,pady = ydis) #Eingabefeld 2 eingabe2 = tkinter.Entry(gui, textvariable=equation2, width=4, bg ='#ffffff') eingabe2.grid(row=1, column=1, padx=xdis, pady = ydis)
我認為問題出在新聞 function 和表達式的部分......? [Piyush] 上面討論的條目小部件問題沒有發生,因為按下 function 和其中定義的表達式。 上面提到了這個問題的根本原因。
而且我的退出按鈕也不會關閉我的 window ...? [Piyush] 我在最后運行它檢查了共享代碼,退出按鈕按預期工作,它正在關閉 window。 它不適用於您,可能是因為 python 環境(python 版本等)。 還有另一種方法可以關閉 window,而不是使用 GUI.quit,您可以使用 GUI.destroy 並查看它是否有幫助。
這是我的新代碼,它不起作用:
'''
def press(num):
global expression
expression = expression + str(num)
equation.set(expression)
def clear():
global expression
expression = ""
equation1.set("")
equation2.set("")
#create GUI
# Driver code
if __name__ == "__main__":
# create a GUI window
gui = Tk()
gui.title("GUI")
equation1 = StringVar()
equation2 = StringVar()
equation1.set("")
equation2.set("")
#Label 1
label1 = tkinter.Label(text ="Pumpenhöhe 1")
label1.grid (row =0 , column =0 , padx = xdis , pady = ydis )
#Eingabefeld 1 definieren
eingabe1 = tkinter.Entry(gui, textvariable=equation1, width=4, bg ='#ffffff')
eingabe1.grid(row=0, column=1, padx=xdis, pady = ydis)
eingabe1.focus_set()
#Label 2
label2 = tkinter.Label (text ="Pumpenhöhe 2")
label2.grid(row=1,column =0 , padx = xdis ,pady = ydis)
#Eingabefeld 2
eingabe2 = tkinter.Entry(gui, textvariable=equation2, width=4, bg ='#ffffff')
eingabe2.grid(row=1, column=1, padx=xdis, pady = ydis)
'''
這是您可以嘗試的修訂代碼 -
def press(num):
global expression
expression = expression + str(num)
equation1.set(expression)
def clear():
global expression
expression = ""
equation1.set("")
equation2.set("")
#create GUI
# Driver code
if __name__ == "__main__":
# create a GUI window
gui = Tk()
gui.title("GUI")
equation1 = StringVar()
equation2 = StringVar()
equation1.set("")
equation2.set("")
#Label 1
label1 = tkinter.Label(text ="Pumpenhöhe 1")
label1.grid (row =0 , column =0 , padx = xdis , pady = ydis )
#Eingabefeld 1 definieren
eingabe1 = tkinter.Entry(gui, textvariable=equation1, width=4, bg ='#ffffff')
eingabe1.grid(row=0, column=1, padx=xdis, pady = ydis)
eingabe1.focus_set()
#Label 2
label2 = tkinter.Label (text ="Pumpenhöhe 2")
label2.grid(row=1,column =0 , padx = xdis ,pady = ydis)
#Eingabefeld 2
eingabe2 = tkinter.Entry(gui, textvariable=equation2, width=4, bg ='#ffffff')
eingabe2.grid(row=1, column=1, padx=xdis, pady = ydis)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.