Как вставить горизонтальную полосу прокрутки в кадр tkinter с несколькими столбцами вводаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как вставить горизонтальную полосу прокрутки в кадр tkinter с несколькими столбцами ввода

Сообщение Anonymous »

У меня есть следующий код:
из tkinter import *

Код: Выделить всё

Main = Tk()
# Main window
Main.title("Program")
Main.geometry("900x520")
# Background photo placed on top of Main
Photo_BG = PhotoImage(file=r"..//\Pictures\Background2.png")
Background_Main = Canvas(Main, width=800, height=400)
Background_Main.place(x=1, y=1)
# Frame One placed on top of Background photo. Frame One will be used to place widgets on it
Frame_BG = PhotoImage(file=r"..//\Pictures\Frame.png")
Frame_one = Frame(Background_Main, width=300, height=200)
Frame_one.place(x=1, y=1)
Label_Frame_one = Label(Frame_one, image = Frame_BG)
Label_Frame_one.place(x=1, y=1)
# Horizontal Scrollbar for the Frame One to Scroll Entry Columns
hbar = Scrollbar(Frame_one,orient = 'horizontal',width= 20)

for i in range(9): # columns
for j in range(4): # rows
entry_grid = Entry(Frame_one, width=7, fg='black', font=('Arial',10,'bold'))
entry_grid.place(x=((i*60)+1), y=((j*20)+1))
entry_grid.insert(END, str(i+j))
entry_grid.config(state= "disabled")

entry_grid.config(xscrollcommand = hbar.set)
hbar.place(x=1, y=90)
Main.mainloop()
и это результат:
[img]https://i.sstatic.net /DVS7XP4E.png[/img]

Как мне выполнить горизонтальную прокрутку между столбцами только в Frame_One? Я хочу использовать особенности места, а не пакет.
РЕДАКТИРОВАТЬ:
На основе этого предложения по ссылке мне удалось почти найти то, что искал. Проблема в том, что я действительно хочу использовать место. не упаковывать. и из-за этого я не знаю, как сделать полосу прокрутки x шире, а полосу прокрутки y больше, потому что с местом. опции заполнения нет.

Код: Выделить всё

from tkinter import *

class Example:

def __init__(self, master):
root.geometry("500x400")
root.title("Program")
self.PhotoImage_BG = PhotoImage(file=r"..//\Pictures\Frame.png")
self.canvas = Canvas(root, borderwidth=0, background="#ffffff", width=400, height=300)
self.canvas.create_image(0,0,image=self.PhotoImage_BG, anchor='nw')
self.canvas.place(x=0, y=0)
self.frame = Frame(self.canvas, background="#ffffff")

self.vsb = Scrollbar(self.canvas, orient="vertical", command=self.canvas.yview)
self.hsb = Scrollbar(self.canvas, orient="horizontal", command=self.canvas.xview)
self.canvas.configure(yscrollcommand=self.vsb.set)
self.canvas.configure(xscrollcommand=self.vsb.set)

self.vsb.place(x=0, y=125)
self.hsb.place(x=200, y=0)
#self.canvas.pack(side="left", fill="both", expand=True)
self.canvas.create_window((20,20), window=self.frame, anchor="nw",
tags="self.fraasdme")

self.frame.bind("", self.onFrameConfigure)

self.populate()

def populate(self):
'''Put in some fake data'''
for i in range(33): # columns
for j in range(33): # rows
self.entry_grid = Entry(self.frame, width=7, fg='black', font=('Arial',10,'bold'))
self.entry_grid.grid(row=j, column=i)
self.entry_grid.insert(END, "N/A")

def onFrameConfigure(self, event):
'''Reset the scroll region to encompass the inner frame'''
self.canvas.configure(scrollregion=self.canvas.bbox("all"))

root = Tk()
Example(root)
root.mainloop()
Изображение

Ребята, у вас есть идея?


Подробнее здесь: https://stackoverflow.com/questions/784 ... entry-colu
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»