<p>假设您想在GtkEntry中按<code>enter</code>来计算新的数字:</p>
<pre><code>import gi
import math
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class TableWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Injection Time Calculator")
table = Gtk.Table(7, 2, True)
self.add(table)
self.sizeLabel = Gtk.Label("WALL SIZE")
widthLabel = Gtk.Label("WIDTH")
heightLabel = Gtk.Label("HEIGHT")
fsLabel = Gtk.Label("FLAT STUD?")
ecLabel = Gtk.Label("EC?")
self.injLabel = Gtk.Label()
self.heightEntry=Gtk.Entry()
self.heightEntry.connect("activate", self.calculate)
self.widthEntry=Gtk.Entry()
self.widthEntry.connect("activate", self.calculate)
self.sizeBox = Gtk.ComboBoxText()
self.sizeBox.append("1","90")
self.sizeBox.append("2","140")
self.sizeBox.append("3","219")
self.fsCheckButton=Gtk.CheckButton()
self.ecCheckButton=Gtk.CheckButton()
calculateButton=Gtk.Button.new_with_label("CALCULATE INJECTION TIME")
calculateButton.connect("clicked", self.calculate)
table.attach(self.sizeLabel, 0, 1, 0, 1)
table.attach(widthLabel, 0, 1, 1, 2)
table.attach(heightLabel, 0, 1, 2, 3)
table.attach(fsLabel, 0, 1, 3, 4)
table.attach(self.injLabel, 0, 2, 6, 7)
table.attach(ecLabel, 0, 1, 4, 5)
table.attach(calculateButton, 0, 2, 5, 6)
table.attach(self.widthEntry, 1, 2, 1, 2)
table.attach(self.heightEntry, 1, 2, 2, 3)
table.attach(self.sizeBox, 1, 2, 0, 1)
table.attach(self.fsCheckButton, 1, 2, 3, 4)
table.attach(self.ecCheckButton, 1, 2, 4, 5)
def calculate (self, widget):
studWidth=self.sizeBox.get_active_text()
areaHeight=self.heightEntry.get_text()
areaWidth=self.widthEntry.get_text()
if self.fsCheckButton.get_active():
if studWidth=="90":
areaWidth=float(areaWidth)-59
elif studWidth=="140":
areaWidth=float(areaWidth)-38
elif studWidth=="219":
areaWidth=float(areaWidth)-24.3
if self.ecCheckButton.get_active():
if studWidth=="90":
areaWidth=float(areaWidth)-2*(59)
elif studWidth=="140":
areaWidth=float(areaWidth)-2*38
elif studWidth=="219":
areaWidth=float(areaWidth)-2*24.3
timeVar=float(studWidth)*10.7/140
injTime=((float(areaWidth)*float(areaHeight)*float(timeVar))/1000000)
a= str( 'INJECTION TIME IS '+str(injTime)[:7]+' SECONDS OR '+str((math.ceil(injTime*5))/5)+' ROUNDED')
self.injLabel.set_text(a)
self.fsCheckButton.set_active(False)
self.ecCheckButton.set_active(False)
win = TableWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
</code></pre>
<p>我改变了你的代码。在</p>