如何在我的Python应用程序中添加自定义tkinter文本框?

时间:2018-03-28 02:47:08

标签: python tkinter textbox

所以我一直在使用python来做我的' ETL'从SQL到Excel或CSV。我刚刚发现它比使用SSIS更快更容易。

当我在Jupyter中这样做时,我认为将它打包成一个我可以与他人分享的应用程序是一个有趣的练习。我不是最精通tkinter的,我正在尝试添加一个自定义大小的文本框,它比复制/粘贴查询的标准文本框好一点。问题是当我添加文本框时,它会调整应用程序窗口的设置。

这是我到目前为止所做的:

#Load Libraries
import pandas as pd
import numpy as np
import pyodbc
import xlsxwriter
from pandas import ExcelWriter 
import openpyxl
import os
import datetime
from tkinter import *

#create window    
def conVar():
    server = e1.get()
    db =  e2.get()
    un = e3.get()
    pw = e4.get()

    conn=("DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s" % (server, db, un, pw))
    print(conn)

root = Tk()

root.title("SQL2Excel")
root.geometry("500x500")

Label(root, text="Server").grid(row=0)
Label(root, text="Database").grid(row=1)
Label(root, text="Username").grid(row=2)
Label(root, text="pw").grid(row=3)
Label(root, text="Tables").grid(row=6)
Label(root, text="or Enter Query").grid(row=7)

variable = StringVar(root)
variable.set("                                                                       ") 

w = OptionMenu(root, variable, "test1", "test2", "test3")
r = root
r.geometry("250x150")

t = Text(r, height=20, width=40)

e1 = Entry(root)
e2 = Entry(root)
e3 = Entry(root)
e4 = Entry(root, show="*")

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
e3.grid(row=2, column=1)
e4.grid(row=3, column=1)
w.grid(row=6, column=1)
t.grid(row=8, column=1)


Button(root, text='Quit', command=root.destroy).grid(row=4, column=0, sticky=W, pady=4)
Button(root, text='Test Connection', command=conVar).grid(row=4, column=1, sticky=W, pady=4)

root.mainloop()

我们的想法是,输入连接信息后,我会将一个表格列表放入组合框中,或者让用户将查询复制并粘贴到较大的文本框中。我真的觉得自己错过了一些简单的东西,但在这一点上却很挣扎。

有人可以帮我看看我的方式错误吗?谢谢。

1 个答案:

答案 0 :(得分:0)

您的代码会更改根窗口的大小

backup

相反,请尝试更改Combobox的几何图形。

另外,我没有在你的代码中看到一个Combobox