Python: Tkinter LabelFrame: Как установить размер labelFrame в зависимости от размера экрана - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь создать собственное программное обеспечение на Python. У меня есть несколько вкладок, в одной из которых я хотел бы иметь два labelFrame. Их размер должен составлять половину экрана, и они должны содержать другие виджеты.

На данный момент я могу отображать вещи в обоих labelFrames, но не могу контролировать размер, так что это мой виджет, который определяет размер ... Также виджеты внутри labelFrames представляют собой динамический сюжет и видеопоток с камеры.

  • Так можно ли определить размер labelFrame на основе половины размера экрана и не превышать его?
  • Иначе, чтобы установить размер виджетов на половину экрана?

Спасибо за вашу помощь!

вот изображение того, чего я хочу достичь

это мой код:

#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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...