昨天我在笔记本中插入两个不同的类时遇到问题。不幸的是,问题仍然存在。您可以通过以下链接找到它:
使用 Tkinter 和 Python 将同一框架内的两个不同类插入笔记本时出现问题
我遵循了这些建议,我修改了删除从计算中检索值的按钮(不必要的)的代码。现在我已经输入了一个条目(顺便说一句,这不起作用),并且还删除了不必要的导入等等。即使脚本不起作用,也不会将类插入笔记本的框架中。希望你能帮我!
提前致谢
赫克托
这是代码:
from Tkinter import *
import Tkinter as tk
import ttk
import tkFont
import tkMessageBox
import sys
import math
def defocus(event):
event.widget.master.focus_set()
root = tk.Tk()
root.title("Autana")
f= tkFont.Font(family="verdana", size=12,weight=tkFont.BOLD)
f2= tkFont.Font(family="Times", size=20, weight=tkFont.BOLD)
c1= 'PeachPuff2'
notebook = ttk.Notebook(root)
notebook.pack(fill='both', expand=True)
notebook.pressed_index = None
ContainerOne = ttk.Frame(notebook);
ContainerOne.pack(fill='both', expand=True);
notebook.add(ContainerOne, text='Standard Reliability')
canvas1 = tk.Canvas(ContainerOne, width=950, height=450,bg=c1)
scroll = ttk.Scrollbar(ContainerOne, command=canvas1.yview)
canvas1.config(yscrollcommand=scroll.set, scrollregion=(0,0,100,1000))
canvas1.pack(side='left', fill='both', expand=True)
scroll.pack(side='right', fill='y')
frameOne = tk.Frame(canvas1, width=900, height=450)#,bg=c1,bd=22)
canvas1.create_window(630, 270, window=frameOne)
class MyListbox:
def __init__(self, parent):
self.parent = parent
self.myData= (
["1", "Jhon Doe", "Madrid", "0341-672541", "6 SD"],
["5", "Kenji S.", "Tokyo", "0341-213212", "10 SD"])
self.establishment()
def combobox_handler(self, event):
current = self.combobox.current()
self.entNumber.delete(0, 'end')
self.entName.delete(0, 'end')
self.entCity.delete(0, 'end')
self.entTel.delete(0, 'end')
self.entAddress.delete(0, 'end')
self.entNumber.insert('end', self.myData[current][0])
self.entName.insert('end', self.myData[current][1])
self.entCity.insert('end', self.myData[current][2])
self.entTel.insert('end', self.myData[current][3])
self.entAddress.insert('end', self.myData[current][4])
def establishment(self):
mainFrame = ttk.Frame(self.parent)
mainFrame.pack(fill='both', expand='yes')
fr_left = ttk.Frame(mainFrame)
fr_left.pack(fill='both', expand='yes', side='left')
names = [person[1] for person in self.myData]
self.combobox = ttk.Combobox(fr_left, values=names)
self.combobox.bind('<<ComboboxSelected>>', self.combobox_handler)
self.combobox.pack()
self.combobox.set("Data People")
fr_right = ttk.Frame(mainFrame)
fr_right.pack(fill='both', expand='yes', side='right')
fr_up = ttk.Frame(fr_right)
fr_up.pack(side='top', expand='yes')
ttk.Label(fr_up, text='List Number').grid(row=0, column=0, sticky='w')
self.entNumber = ttk.Entry(fr_up)
self.entNumber.grid(row=0, column=1)
ttk.Label(fr_up, text='Name').grid(row=1, column=0, sticky='w')
self.entName = ttk.Entry(fr_up)
self.entName.grid(row=1, column=1)
ttk.Label(fr_up, text='City').grid(row=2, column=0, sticky='w')
self.entCity = ttk.Entry(fr_up)
self.entCity.grid(row=2, column=1)
ttk.Label(fr_up, text='No. Tel').grid(row=3, column=0, sticky='w')
self.entTel = ttk.Entry(fr_up)
self.entTel.grid(row=3, column=1)
ttk.Label(fr_up, text='Address').grid(row=4, column=0, sticky='w')
self.entAddress = ttk.Entry(fr_up)
self.entAddress.grid(row=4, column=1)
class Calculation:
def __init__(self, parent):
self.parent = parent
self.Value1()
self.Value2()
self.Result()
ttk.Label(self.parent,text='Num 1').grid(column=2, row=5, sticky='w', pady=3)
ttk.Label(self.parent,text='Num 2').grid(column=2, row=6, sticky='w', pady=3)
ttk.Label(self.parent,text='Result').grid(column=9,row=9, sticky='w', pady=3)
self.msg = Label(self.parent,text='Sum of 2 number')
self.msg.grid(row=3,column=1,columnspan=2)
self.entry = ttk.Entry(text='Calculate',width=8,command=self.Calc)
self.entry.grid(row=9,column=2,padx=2,pady=3)
def Value1(self):
self.field1 = ttk.Combobox(self.parent)
self.field1['values'] = ('5', '6', '7')
self.field1.grid(column=3, row=5)
def Value2(self):
self.field2 = ttk.Combobox(self.parent)
self.field2['values'] = ('1', '2', '3')
self.field2.grid(column=3, row=6)
def Result(self):
self.entry = StringVar()
self.entry = ttk.Entry(self.parent, textvariable = self.entry)
self.entry.grid(column=3, row=9)
def Calc(self):
self.entry.delete(0, 'end')
try:
value = int(self.field1.get()) + int(self.field2.get())
except ValueError:
self.entry.insert(0, 'Input numbers.')
else:
self.entry.insert(0, str(value))
if __name__ == '__main__':
stepOne = ttk.LabelFrame(frameOne, text=" 1. Select People: ")
stepOne.grid(row=0, column=5, sticky='nsew', \
padx=5, pady=5, ipadx=5, ipady=5)
stepTwo = ttk.LabelFrame(frameOne, text=" 2. Calculation : ")
stepTwo.grid(row=7, column=5, sticky='w', \
padx=5, pady=5, ipadx=5, ipady=5)
app = MyListbox(stepOne)
app2 = Calculation (stepOne)
root.mainloop()