Вес не работает, как ожидалось, когда я использовал его Блокнот и рамка виджета - PullRequest
0 голосов
/ 12 июня 2018

Ниже приведен код.Здесь страница 2 - вторая вкладка пользовательского интерфейса (проверьте изображение пользовательского интерфейса). Во второй вкладке я создаю фрейм и добавляю метку и поле ввода.

import tkinter as tk

from dicttoxml import dicttoxml
import xlrd


import GetValueFromExcel
from AppalyingXSLT import GenerateConfig
#import CreateXMLfromDict
from GetValueFromExcel import ExcelValue
from array import array
from tkinter import *
from tkinter import ttk, Button
from tkinter import *

root = Tk()
CheckBoxSelection=[]
NameOfVariable=[]
KeyName=[]
SelectedCheckbox=[]
dict={}
frame_main = tk.Frame(root)
frame_main.grid(sticky='news')
canvas=tk.Canvas()

class UICreation():

    def __init__(self):
        print ("I m in __init__")
        self.nb=ttk.Notebook(frame_main)
        self.page1=ttk.Frame(self.nb)
        self.page2=ttk.Frame(self.nb)

    def tabcreation(self):
        print ("I M in Tab Creation")
        self.nb.add(self.page1,text="Select")
        canvas = tk.Canvas(self.page1)
        canvas.grid(row=0, column=0, sticky="news")
        vsb = tk.Scrollbar(self.page1, orient="vertical", command=canvas.yview)
        vsb.grid(row=0, column=1, sticky='ns')
        canvas.configure(yscrollcommand=vsb.set)
        canvas.config(scrollregion=canvas.bbox("all"))
        f = tk.Frame(canvas)
        canvas.create_window((0, 0), window=f, anchor="n")
        self.nb.grid(sticky=NW)
        print ("I M in checkBox")
        ListNumber=len(List_key)
        print (ListNumber)
        for value in range(0,ListNumber, 1):
             NameOfVariable= "checkBox" + str(value)
             CheckBoxSelection.append("var"+str(value))
             CheckBoxSelection[value]=IntVar()
             NameOfVariable = Checkbutton(f, text=str(List_key[value]),variable=CheckBoxSelection[value])
             Checkbutton()
             NameOfVariable.grid(sticky=NW)
             NameOfVariable.cget("text")
             KeyName.append(NameOfVariable.cget("text"))
        canvas.update()
        canvas.config(scrollregion=canvas.bbox("all"))

    def addNew(self):
        self.nb.add(self.page2,text="Add")
        self.nb.grid_columnconfigure(0,weight=1)
        page2frame=Frame(self.page2)
        page2frame.grid(row=0, column=0, sticky='WE', padx=5, pady=5, columnspan=3)
        page2frame.grid_columnconfigure(1, weight=1)
        lblentry = Label(page2frame, text="Entry Box:")
        lblentry.grid(row=0, column=0, sticky='W')
        entrybx = Entry(page2frame)
        entrybx.grid(row=0, column=0, sticky=E+W, columnspan=10)
        #codeName=tk.Label(page2frame,text="Name").grid(row=1,rowspan=2,pady=(10,10),sticky="NW")


if __name__ == '__main__':
    ui = UICreation()
    ui.tabcreation()
    ui.addNew()

UI Image

На изображении выше, из приведенного выше кода, я получаю поле ввода только для некоторых столбцов (как упомянуто в «красном» разделе), даже если я пытаюсь расширить.

Пожалуйста, дайте мне знать, как расширить его, как мне нужно, что я указал в «зеленой коробке»

1 Ответ

0 голосов
/ 12 июня 2018

Обновление:

Из вашего обновленного вопроса я вижу, что вам нужно указать вес в столбце 1 на странице 2.

self.page2.columnconfigure(0, weight=1)

Заменить:

class UICreation():

    def __init__(self):
        print ("I m in __init__")
        self.nb=ttk.Notebook(frame_main)
        self.page1=ttk.Frame(self.nb)
        self.page2=ttk.Frame(self.nb)

С этим:

class UICreation():

    def __init__(self):
        print ("I m in __init__")
        self.nb=ttk.Notebook(frame_main)
        self.page1=ttk.Frame(self.nb)
        self.page2=ttk.Frame(self.nb)
        self.page2.columnconfigure(0, weight=1)

Я обновил ваш код, чтобы отразить более чистый пример, который лучше следует PEP8.

Сообщите мне, если у вас есть какие-либо вопросы:

import tkinter as tk
import tkinter.ttk as ttk


class UICreation():

    def __init__(self, master):
        self.nb=ttk.Notebook(master)
        self.page1=ttk.Frame(self.nb)
        self.page2=ttk.Frame(self.nb)
        self.page2.columnconfigure(0, weight=1)
        self.check_box_election=[]
        self.name_of_variable=[]
        self.key_name=[]
        self.selected_checkbox=[]
        self.dict={}
        self.frame_main = tk.Frame(root)
        self.frame_main.grid(sticky='news')
        self.canvas=tk.Canvas()
        self.list_key = ["1", "2"]

    def tabcreation(self):
        self.nb.add(self.page1,text="Select")
        canvas = tk.Canvas(self.page1)
        canvas.grid(row=0, column=0, sticky="news")
        vsb = tk.Scrollbar(self.page1, orient="vertical", command=canvas.yview)
        vsb.grid(row=0, column=1, sticky='ns')
        canvas.configure(yscrollcommand=vsb.set)
        canvas.config(scrollregion=canvas.bbox("all"))
        f = tk.Frame(canvas)
        canvas.create_window((0, 0), window=f, anchor="n")
        self.nb.grid(sticky="nw")

        list_number = len(self.list_key)
        for value in range(0,list_number, 1):
            name_of_variable= "checkBox" + str(value)
            self.check_box_election.append("var"+str(value))
            self.check_box_election[value] = tk.IntVar()
            name_of_variable = tk.Checkbutton(f, text=str(self.list_key[value]),variable=self.check_box_election[value])
            name_of_variable.grid(sticky="nw")
            name_of_variable.cget("text")
            self.key_name.append(name_of_variable.cget("text"))
        canvas.update()
        canvas.config(scrollregion=canvas.bbox("all"))

    def add_new(self):
        self.nb.add(self.page2,text="Add")
        page2frame = tk.Frame(self.page2)
        page2frame.grid(row=0, column=0, sticky='ew', padx=5, pady=5, columnspan=3)
        page2frame.grid_columnconfigure(1, weight=1)
        lblentry = tk.Label(page2frame, text="Entry Box:")
        lblentry.grid(row=0, column=0, sticky='w')
        entrybx = tk.Entry(page2frame)
        entrybx.grid(row=0, column=0, sticky="ew", columnspan=10)

if __name__ == '__main__':
    root = tk.Tk()
    ui = UICreation(root)
    ui.tabcreation()
    ui.add_new()
    root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...