Импорт Tkinter и rowspan / липкий вопрос - PullRequest
0 голосов
/ 26 октября 2018

Я пишу программу для создания черновиков электронных писем и пытаюсь настроить ее с помощью графического интерфейса tkinter. Я на Python 3.5 с tkinter 8.6.

Моя проблема в том, что я не могу заставить работать rowspan. Я хочу, чтобы первая строка занимала несколько строк, но когда я добавляю 'rowspan', строка не меняет размер. Если я добавлю «sticky = tK.N + tK.S», я получу ошибки, которые ничего не значат. Итак, я начал баловаться с тем, как я импортировал tkinter, пытаясь импортировать его из, импортировать как tk, импортировать *, но все, что я изменяю, ломает что-то еще, и все еще не получает липкость север-юг, которую я ищу, так что ряд растянется и заполнит пространство.

Я почти уверен, что это проблема с тем, как я импортирую tkinter, и любой совет был бы очень признателен. Я также не могу заставить работать tkinter, если я использую «import tkinter as tk«, потому что тогда я получаю ошибки, такие как имя «StringVar» не определено ». Я попытался исправить это, переместившись туда, где был объявлен мой root, но это создало проблемы с GUI.

Помощь! Спасибо:)

import os
# pull in GUI stuff
import tkinter as tk #import Tk, Label, Button, W, E, N, S, StringVar, OptionMenu, Entry, Text, END, WORD
from PIL import Image, ImageTk

path = os.getcwd()


# init GUI
class GUI:
    def __init__(self, master):
        self.master = master
        master.title("Email Draft Builder")
        # set logo image
        f = os.getcwd() + "\\cgs_logo.gif"
        # lock in image for use outside this section
        im = Image.open(f)
        ph = ImageTk.PhotoImage(im)
        # vars to show dynamic text for displays 1 and 2
        self.box1_titleText = tk.StringVar()
        self.box2_titleText = tk.StringVar()

        self.box1_content = tk.StringVar()
        self.box2_content = tk.StringVar()

# main/container pane info
        self.label = tk.Label(master, text="Email Draft Composer", image = ph, bg = "#ffffff")
        self.label.image = ph
        self.label.grid(columnspan = 3, row = 0, rowspan = 2, sticky=tk.N+
                        tk.S, column=1)

# ROW 1
        self.readLast_button = tk.Button(master, text="Read Training File", command=self.dataOps)
        self.readLast_button.grid(row=3, column=0,sticky=tk.W)

# ROW 2
        self.file_button = tk.Button(master, text="Unused", command=self.chooseSite)
        self.file_button.grid(row=4, column=0,sticky=tk.W)

# ROW 3
        self.pullSite_button = tk.Button(master, text="Show Site Info:", command=self.pullSite)
        self.pullSite_button.grid(row=5, column=0,sticky=tk.W)

        self.getSite = tk.Entry(master)
        self.getSite.grid(row=5, column=1,sticky=tk.W)

# ROW 4
        self.sendEmail_button = tk.Button(master, text="Build Email", command=self.sendEmail)
        self.sendEmail_button.grid(row=6, column=0,sticky=tk.W)

        recipients = ["mgancsos@cogstate.com","mgancsos@gmail.com","kkiernan@cogstate.com;mchabon@cogstate.com","ashortland@cogstate.com"]
        self.receiver = tk.StringVar()
        self.receiver.set(recipients[0])
        self.menu1 = tk.OptionMenu(master, self.receiver, *recipients)
        self.menu1.grid(row=6, column=1,sticky=tk.W)

# ROW 5
        self.close_button = tk.Button(master, text="Close", command=root.destroy)
        self.close_button.grid(row=7, column=0,sticky=tk.W)

# ROW 6
        self.box1_title = tk.Label(master, textvariable=self.box1_titleText, bg = "#fffff0", borderwidth=1, relief = "groove", width = 15)
        self.box1_title.grid(columnspan=1, row = 8, column=0, sticky=tk.W)
        self.box1_pane = tk.Label(master, textvariable=self.box1_content, bg = "#fffff0", borderwidth=1, relief = "groove", width = 55)
        self.box1_pane.grid(columnspan=1, row = 8, column=1,  sticky=tk.W)

# ROW 7
        self.box2_title = tk.Label(master, textvariable=self.box2_titleText, bg = "#ffff00", borderwidth=1, relief = "groove", width = 15)
        self.box2_title.grid(columnspan=1, row = 9, column=0, sticky='nw')
        self.box2_pane = tk.Label(master, textvariable=self.box2_content, bg = "#ffffff", borderwidth=1, relief = "groove", width = 55)
        self.box2_pane.grid(columnspan=1, row = 9, column=1, sticky='NW')
# ROW 8
        self.display1 = tk.Text(master, wrap=tk.WORD)
        self.display1.grid(columnspan=1, row = 10, column=1, sticky=tk.W)

    def dataOps(self):
        return(1)

    def chooseSite(self):
        return(1)        

    def pullSite(self):
        return(1)        

    def sendEmail(self):
        return(1)        


root = tk.Tk()
root.geometry('800x800')
root["bg"] = "#ffffff"
my_gui = GUI(root)
root.mainloop()
...