我正在尝试用Python制作自己的软件。 我有多个标签,其中一个我想有两个labelFrame。 它们的大小应为屏幕的一半,并且应包含其他小部件。
现在,我可以在两个labelFrames中进行绘制,但无法控制大小,因此它是定义大小的我的小部件... labelFrames内部的小部件也是动态图和摄像机视频流。
感谢您的帮助!
here is an image of what i want to achieve
这是我的代码:
#creating multiple tab
tab_control = ttk.Notebook(window)
self.tab1 = ttk.Frame(tab_control)
tab_control.add(self.tab1, text='Visualization')
self.tab2 = ttk.Frame(tab_control)
tab_control.add(self.tab2, text='Parameters')
tab_control.pack(expand=1, fill='both')
self.createTabOne()
函数createTabOne():
def createTabOne(self):
#plot
labelFrame1 = ttk.Labelframe(self.tab1, text = "Plot", labelanchor="n")
labelFrame1.grid(column = 0, row = 0, padx= 5, pady =5)
self.emptyPlot(labelFrame1)
#camera
labelFrame2 = ttk.Labelframe(self.tab1, text = "Camera",labelanchor="n")
labelFrame2.grid(column = 1, row = 0, padx= 5, pady =5)
self.createCamera(labelFrame2)
设置第一个绘图的功能:
def emptyPlot(self, label):
print ("emptyPlot index: " +str(self.index))
#init objects fig, and figSubPlot
self.fig = Figure(figsize=(6.2, 4), dpi=100, constrained_layout=True)
self.figSubPlot = self.fig.add_subplot(111)
#default axis & default label (init only)
self.figSubPlot.axis([-12,12, 0, 20])
self.figSubPlot.set_title("Init Data")
self.figSubPlot.set_xlabel('X')
self.figSubPlot.set_ylabel('Y')
self.figSubPlot.plot([self.index],[self.index], 'ro') #ok
self.canvas = FigureCanvasTkAgg(self.fig, master=label)
self.canvas.draw()
self.canvas.get_tk_widget().pack()
并设置摄像机流:
def createCamera(self, label):
self.cap = cv2.VideoCapture(0)
#all camera haven't same parameters
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 10)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 10)
# create widget (parent=label)
self.lmain = ttk.Label(label)
#widget et on the grid
self.lmain.grid(column = 0, row = 0)