我想让python程序看起来像this 所以我做了类似的代码看:
from Tkinter import *
import Tkinter
import tkMessageBox
top=Tkinter.Tk()
def and1(a,b):
print int(a and b)
def or1(a,b):
print int(a or b)
def not1(a):
print int(not a)
def xor1(a,b):
print int((a and not b) or (not a and b))
def exit1(top):
top.destroy()
def exit2(top):
top.destroy()
def expl():
top=Tkinter.Tk()
l1=Label(top,text="Number 1").grid(row=0,column=0)
e1=Entry(top,bd=5)
e1.grid(row=0,column=1)
e3=Entry(top,bd=5)
l3=Label(top,text="Binary Number 1").grid(row=0,column=2)
e3.grid(row=0,column=3)
l2=Label(top,text="Number 2").grid(row=1,column=0)
e2=Entry(top,bd=5)
e2.grid(row=1,column=1)
l4=Label(top,text="Binary Number 2").grid(row=1,column=2)
e4=Entry(top,bd=5)
e4.grid(row=1,column=3)
l5=Label(top,text="t.f.p.r.s").grid(row=2,column=2) #says text from previous radiobutton selection
e5=Entry(top,bd=5)
e5.grid(row=2,column=3)
l6=Label(top,text="Decimal Result").grid(row=3,column=1)
e6=Entry(top,bd=5)
e6.grid(row=3,column=2)
b1=Tkinter.Button(top,bd=5,text="Exit",command=lambda top=top:exit2(top)).grid(row=4,column=0)
top.mainloop()
L1=Label(top,text="Number 1").grid(row=0,column=0)
E1=Entry(top,bd=5)
E1.grid(row=0,column=1)
L2=Label(top,text="Number 2").grid(row=0,column=2)
E2=Entry(top,bd=5)
E2.grid(row=0,column=3)
var=IntVar()
R1=Radiobutton(top,text="AND",variable=var,value=1,command="and1")
R1.grid(row=1,column=0)
R2=Radiobutton(top,text="OR",variable=var,value=2,command="or1")
R2.grid(row=1,column=1)
R3=Radiobutton(top,text="NOT",variable=var,value=3,command="not1")
R3.grid(row=2,column=0)
R4=Radiobutton(top,text="XOR",variable=var,value=4,command="xor1")
R4.grid(row=2,column=1)
label=Label(top)
label.grid()
B1=Tkinter.Button(top,text="Result is:",command="result",bd=5)
B1.grid(row=3,column=0)
B2=Tkinter.Button(top,text="Explanation",command=expl,bd=5)
B2.grid(row=3,column=1)
B3=Tkinter.Button(top,bd=5,text="Exit",command=lambda top=top:exit1(top)).grid(row=3,column=2)
L3=Label(top,text="Result is:").grid(row=4,column=0)
E3=Entry(top,bd=5)
E3.grid(row=4,column=1)
top.mainloop()
现在修改了。我希望用户应该在第一帧中输入值并相应地得到结果,同样在解释点击时,其他帧打开并仅使用之前的值进行解释。
答案 0 :(得分:0)
我不知道该说些什么。我不想为你彻底解决问题,但我希望更好地理解Python的Tkinker。阅读课程,将来会有所帮助。
#!/usr/bin/python
from Tkinter import *
import Tkinter
import tkMessageBox
top=Tkinter.Tk()
res = 0
tfprs = ""
def and1(a,b):
global res
res = int(a and b)
def or1(a,b):
global res
res = int(a | b)
def not1(a):
global res
res = int(not a)
def xor1(a,b):
global res
res = int((a and not b) or (not a and b))
def result(event=None):
global top,res,E3
text = StringVar()
E3=Entry(top,textvariable=text,bd=5)
E3.grid(row=4,column=1)
text.set(str(res))
def exit1(top):
top.destroy()
def exit2(top):
top.destroy()
def selected():
global tfprs
tfprs = var.get()
def expl(a,b):
global top,tfprs,res
binary1 = StringVar()
binary2 = StringVar()
top1=Tkinter.Toplevel(top)
value1 = IntVar()
l1=Label(top1,text="Number 1").grid(row=0,column=0)
e1=Entry(top1,textvariable = value1,bd=5)
value1.set(a)
e1.grid(row=0,column=1)
e3=Entry(top1,textvariable = binary1,bd=5)
l3=Label(top1,text="Binary Number 1").grid(row=0,column=2)
binary1.set(format(a,'b'))
e3.grid(row=0,column=3)
value2 = IntVar()
l2=Label(top1,text="Number 2").grid(row=1,column=0)
e2=Entry(top1,textvariable = value2,bd=5)
value2.set(b)
e2.grid(row=1,column=1)
l4=Label(top1,text="Binary Number 2").grid(row=1,column=2)
e4=Entry(top1,textvariable = binary2,bd=5)
binary2.set(format(b,'b'))
e4.grid(row=1,column=3)
l5=Label(top1,text="t.f.p.r.s").grid(row=2,column=2) #says text from previous radiobutton selection
operator = StringVar()
e5=Entry(top1,textvariable = operator,bd=5)
operator.set(tfprs)
operator.set(tfprs)
e5.grid(row=2,column=3)
dres = IntVar()
l6=Label(top1,text="Decimal Result").grid(row=3,column=1)
e6=Entry(top1,textvariable = dres ,bd=5)
dres.set(res)
e6.grid(row=3,column=2)
b1=Tkinter.Button(top1,bd=5,text="Exit",command=lambda top=top1:exit2(top1)).grid(row=4,column=0)
top.mainloop()
def dotwo(a,b):
selected()
expl(a,b)
num1 = IntVar()
L1=Label(top,text="Number 1").grid(row=0,column=0)
E1=Entry(top,textvariable = num1,bd=5)
num1.set(1)
E1.grid(row=0,column=1)
num2 = IntVar()
L2=Label(top,text="Number 2").grid(row=0,column=2)
E2=Entry(top,textvariable =num2,bd=5)
num2.set(1)
E2.grid(row=0,column=3)
var=StringVar()
R1=Radiobutton(top,text="AND",variable=var,value="AND",command=lambda: and1(int(E1.get()),int(E2.get())))
R1.grid(row=1,column=0)
R2=Radiobutton(top,text="OR",variable=var,value="OR",command=lambda: or1(int(E1.get()),int(E2.get())))
R2.grid(row=1,column=1)
R3=Radiobutton(top,text="NOT",variable=var,value="NOT",command=lambda: not1(int(E1.get())))
R3.grid(row=2,column=0)
R4=Radiobutton(top,text="XOR",variable=var,value="XOR",command=lambda: xor1(int(E1.get()),int(E2.get())))
R4.grid(row=2,column=1)
label=Label(top)
label.grid()
B1=Tkinter.Button(top,text="Result is:",command=result,bd=5)
B1.grid(row=3,column=0)
B2=Tkinter.Button(top,text="Explanation",command=lambda:dotwo(int(E1.get()),int(E2.get())),bd=5)
B2.grid(row=3,column=1)
B3=Tkinter.Button(top,bd=5,text="Exit",command=lambda top=top:exit1(top)).grid(row=3,column=2)
L3=Label(top,text="Result is:").grid(row=4,column=0)
E3=Entry(top,bd=5)
E3.grid(row=4,column=1)
top.mainloop()