Python:Tkinter LabelFrame:如何根据屏幕大小设置labelFrame大小

时间:2018-11-04 02:17:16

标签: python tkinter

我正在尝试用Python制作自己的软件。 我有多个标签,其中一个我想有两个labelFrame。 它们的大小应为屏幕的一半,并且应包含其他小部件。

现在,我可以在两个labelFrames中进行绘制,但无法控制大小,因此它是定义大小的我的小部件... labelFrames内部的小部件也是动态图和摄像机视频流。

  • 那么是否有可能基于半屏尺寸来定义labelFrame的尺寸,并且不超过它?
  • 是否要将小部件的尺寸固定到屏幕的一半?

感谢您的帮助!

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)

0 个答案:

没有答案