Altura do controle não é respeitada!

13. Re: Altura do controle não é respeitada!

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 02/03/2023 - 16:21h

Buckminster escreveu:

Caso tu tivesse lido os links (não são grandes os textos) e pesquisado ali em vez de dar chilique entenderia que tem tudo a ver com teu problema.
Vamos lá, vou explicar, mas não vou desenhar.

Se EU não tivesse LIDO e relido quase 20 vezes muito antes de perguntar aqui no VOL, eu não teria dito que gtk_widget_set_size_request não funciona!
Eu não teria ESCRITO na pergunta que você não leu, "Alguém sabe como conserto isso?"

No primeiro link:
Using the window allocation directly will not work in all circumstances and can lead to growing or shrinking windows.

"Usar a alocação de janela diretamente NÃO FUNCIONARÁ EM TODAS AS CIRCUNSTÂNCIAS e pode levar ao aumento ou redução das janelas."

No segundo link:
The size request of a widget is the smallest size a widget can accept while still functioning well and drawing itself correctly. However in some strange cases a widget may be allocated less than its requested size, and in many cases a widget may be allocated more space than it requested.

"A solicitação de tamanho de um widget é o menor tamanho que um widget pode aceitar enquanto ainda funciona bem e se desenha corretamente. No entanto, em alguns casos estranhos um widget pode receber menos do que o tamanho solicitado e, em muitos casos, um widget pode receber mais tamanho do que o solicitado."

Isso significa que depende do widget e depende também se não está fixado um tamanho padrão.

E veja aqui, seu animal:
https://docs.gtk.org/gtk4/class.Entry.html

A única coisa que você mostra aqui, é que só agora depois que você leu sobre a classe que você cita que você entendeu o que antes já deixei claro na pergunta! Que gtk_widget_set_size_request não funciona! Só que isso só serve pra você, não pra MIM que entendi isso MUITO ANTES de perguntar!!"

Veja se tem o comando set_size_request para Entrys.

Para button tente usar gtk_editable_set_width_chars() e set_max_length().
E para entry pode usar gtk_entry_set_width_chars() e set_max_length().

set_width_chars define a largura máxima desejada em caracteres da entry
set_max_length define o comprimento máximo do conteúdo do widget.

Por exemplo, se tu colocar max_length como 5 e width_chars como 2 e digitar o texto "12345" a entry vai aceitar o resize, porém não aceita um rezise que fique menor que 2 charateres.


________________________________________________
Always listen the Buck!

Mais uma vez, LEIA A PERGUNTA!!! Ela só tem 5 LINHAS!!!
Se estou reclamando é porque estou pedindo uma solução!
Eu disse na pergunta que não respeita o tamanho informado! E ÓBVIO, que sei que o comando gtk_widget_set_size_request NÃO SERVE. Deixei isso claro na pergunta!!! É só LER!

max_lenght tem a ver com LARGURA. O que isso tem a ver com a minha PERGUNTA? ONDE eu cito qualquer coisa relacionada a LARGURA??? ONDE???
5 LINHAS apenas pra ler, LEIA A PERGUNTA!

Existe uma ENORME diferença entre LARGURA e ALTURA!
Vou explicar pra você entender: LARGURA é aumentar o controle para as LATERAIS Esquerda e Direita! Não falei em nenhum momento disso!

ALTURA é aumentar o controle para CIMA e para BAIXO, e: gtk_editable_set_width_chars, gtk_entry_set_width_chars, set_max_length
Não fazem NADA DISSO! Nenhum dos comandos que você citou chegam nem perto de mecher com a altura do controle!!!

PENSE, LEIA a pergunta!!! Pq se vc ler as 5 linhas que escrevi pra fazer a pergunta, você não responderia com soluções desconexas que nada tem a ver com a pergunta!

E Acrescentando! Estou perguntado, porque EXISTE uma forma de fazer!!! Eu não sei COMO??? Mas existe!
Não conheço o comando que permite alterar a altura do controle até para 5 em Gtk3. Repetindo ALTURA
Na pergunta que você não leu, explico o tamanho que funciona sem afetar o texto dentro do controle, que é 25, onde o texto fica perfeito, sem cortes!

E OBS não precisa ser mau educado! Se coloca no meu lugar ANTES!
Faço uma pergunta que tem 6 linhas apenas, sendo 5 linhas que falam sobre o problema que não sei resolver!

E você me dá respostas para problemas que não existem nessas 5 linhas!
1) Digo na pergunta que a função gtk_widget_set_size_request não funciona! Ou seja, ela não serve pra resolver meu problema!
Você me pede pra ler sobre a função, a classe, que deixei claro que não serve! E ainda exibe a Syntax de gtk_widget_set_size_request como se eu não estivesse sabendo usar! E não mostrou como eu usaria essa função que não funciona! porque por um breve momento, acreditei que você sabia de alguma declaração milagrosa que eu não estava vendo! Mas no fim, vc não mostrou nada!

2) Falo apenas dos widgets GtkButton e GtkEntry
Você me responde sobre GtkWindow, onde isso tem a ver com a pergunta???

3) Reclamo de altura, você responde sobre largura!

PENSE, se coloque no meu lugar!!! Você vai no restaurante e pede ÁGUA! E o garçom te traz batata-frita??? E ainda diz que você é ignorante? Só porque pediu água e o Garçom não sabe o que é água, só conhece batata frita? ONDE isso tem lógica????

Fiz a pergunta com a humildade de não saber a resposta!
Ainda com a mesma humildade, apenas te peço pra ler a pergunta, e ainda explico o motivo onde suas respostas, não tem nada a ver com a pergunta inicial!
E ainda disse na última resposta, se você sabe como resolver, responda!
mas nenhuma de suas respostas sequer estão relacionadas a pergunta, NENHUMA!


  


14. Re: Altura do controle não é respeitada!

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 02/03/2023 - 16:53h

Apenas acrescentando: Fiz a pergunta, porque ela é baseada no tutorial do site: https://www.gtk.tutorials.us/
Eu havia salvo a imagem do site, a quase 1 ano atrás, mas não sabia que seria hoje uma complexidade resolver o problema!

A dias esse site está fora do ar, e não achei a solução em nenhum outro lugar até agora! Em anexo, a imagem que estou me baseando, e a altura que estou tentando chegar!


15. Re: Altura do controle não é respeitada!

Buckminster
Buckminster

(usa Debian)

Enviado em 03/03/2023 - 00:36h

Usa CSS então.


________________________________________________
Always listen the Buck!


16. Re: Altura do controle não é respeitada!

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 03/03/2023 - 01:15h

Buckminster escreveu:
Usa CSS então.

Sim, imaginei que talvez tenham feito assim, usando CSS, mas não saco nada de CSS, ainda nem consegui chegar na parte de colorir nada.

Seria muito te pedir um exemplo de como consigo usando CSS definir a altura do button em 25? Deixei abaixo já um código pronto, com uma janela + fixer + button, só precisando colocar o código CSS pra diminuir sua altura, que não faço a mínima idéia de como fazer!

#include <gtk/gtk.h>

int main(void) {
gtk_init(NULL, NULL);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 100, 50);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

GtkWidget *fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);

GtkWidget *button = gtk_button_new_with_label("button");
gtk_widget_set_size_request(button, 60, 34);
gtk_fixed_put(GTK_FIXED(fixed), button, 10, 10);

gtk_widget_show_all(window);
gtk_main();
return 0;
}



17. Re: Altura do controle não é respeitada!

Buckminster
Buckminster

(usa Debian)

Enviado em 03/03/2023 - 21:38h

Lá vai textão!
Pelo que vi na imagem tua versão do GTK é a 3.0.

No teu arquivo aí tu coloca depois do include:
@import "/caminho/do/arquivo/animal.css";
ou
@import url("/caminho/do/arquivo/animal.css");

E dentro do arquivo animal.css:

.button {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 150px;
padding-right: 160px;
}

.entry {
padding-top: 0px;
padding-bottom: 0px;
padding-left: 100px;
padding-right: 100px;
}

Daí tu vai testando (aumentando ou diminuindo) até dar o tamanho que tu quer.
A propriedade padding é o espaço entre os caracteres (letras e números) e as bordas do button e da entry.
A propriedade font (ou font-size), se quiser acrescentar (font-size: XXpx;) é o tamanho do elemento, no caso, do button e da entry com os caracteres.
A propriedade padding aceita parâmetros negativos (-8px, por exemplo).


Ou tu pode deixar teu arquivo aí assim (segue a receitinha de bolo):

#include <gtk/gtk.h>

int main(void) {

GtkCssProvider *provider;
GdkDisplay *display;
GdkScreen *screen;

gtk_init(NULL, NULL);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 600, 400);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

GtkWidget *fixed = gtk_fixed_new();
gtk_container_add(GTK_CONTAINER(window), fixed);
GtkWidget *button = gtk_button_new_with_label("button");
gtk_fixed_put(GTK_FIXED(fixed), button, 70, 90);

GtkWidget *entriLabel,*minhaEntry;
entriLabel = gtk_label_new("Digite algo");
minhaEntry = gtk_entry_new();
gtk_entry_set_placeholder_text(GTK_ENTRY(minhaEntry),"Digite algo");
gtk_fixed_put(GTK_FIXED(fixed), minhaEntry, 70, 50);

provider = gtk_css_provider_new ();
display = gdk_display_get_default ();
screen = gdk_display_get_default_screen (display);

gtk_css_provider_load_from_data (provider,
" button {"
" padding-top: 0px;"
" padding-bottom: 0px;"
" padding-left: 150px;"
" padding-right: 160px;"
"}"
" entry {"
" padding-top: 0px;"
" padding-bottom: 0px;"
" padding-left: 100px;"
" padding-right: 100px;"
"}", -1, NULL);

gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER(provider),GTK_STYLE_PROVIDER_PRIORITY_USER);
g_object_unref (provider);
gtk_widget_show_all(window);
gtk_main();
return 0;
}

A classe GtkCssProvider é que embute o css no arquivo em C do GTK.
Tem duas maneiras: usar um arquivo css separado ou embutir o css no arquivo em C, bem como é no PHP com HTML e com Javascript.

Para compilar tu pode usar:
# gcc `pkg-config --cflags gtk+-3.0` -o teste teste.c `pkg-config --libs gtk+-3.0`
E depois:
#./teste

Ou faça da maneira que tu sabe aí.

Agora tu te diverte aí ajeitando o posicionamento do button e da entry na tela.
Pensou que eu não sabia fazer, né?
Só não estava com tempo.
Tive que instalar o GTK3 só para fazer isso.
Te aconselho a instalar uma versão mais atual do GTK.
Qualquer dúvida estou à disposição para sanar, animal.
Veja a imagem anexada!

De bônus seguem uns links:
https://docs.gtk.org/gtk3/css-overview.html
https://www.w3.org/TR/css3-cascade/#at-import
https://stackoverflow.com/questions/8946936/gtk3-css-button-states
https://stackoverflow.com/questions/61266302/reduce-button-height-in-gtk


________________________________________________
Always listen the Buck!


18. Re: Altura do controle não é respeitada!

Apprentice X
ApprenticeX

(usa FreeBSD)

Enviado em 04/03/2023 - 04:09h

Buckminster escreveu:
Pelo que vi na imagem tua versão do GTK é a 3.0.

Sim, mas precisamente v.3.24

Pensou que eu não sabia fazer, né?
Só não estava com tempo.

Porque eu pensaria isso? Se passa-se pela minha cabeça que você não sabia fazer, eu nem tinha dado corda na conversa! Motivo pelo qual insisti em te explicar o que eu precisava!
Quando te passei um código pronto, foi justamente pra facilitar, pq sei que dá trabalho as vezes tentar ajuda os outros

Tive que instalar o GTK3 só para fazer isso.

Obrigado pela dedicação!

Te aconselho a instalar uma versão mais atual do GTK.

Esse é um ponto, porém tive muitos problemas para aprender o Gtk4, muita coisa nele não funciona e nem existe mais comparado ao Gtk3, e uma dessas coisas foi poder capturar x,y,w,h de uma janela, sendo que x,y se tornou impossível pra mim, nenhuma solução funcionava! E não é fácil encontrar exemplos de Gtk4 na Internet, então decidi usar o 3 por ser mais fácil e qdo eu souber mais, migrar para o Gtk4

Valeu pelos links de CSS, com certeza me serão bastante úteis!

Outro ponto: o Button, ficou ótimo, ainda não fiz todos os testes, mas logo ao compilar, ele ficou do tamanho exato que eu gostaria!

Já o caso do GtkEntry, parece que ele não quer facilitar! Na sua imagem, os 2 estavam do tamanho correto! Mas para mim, ficou como mostro na imagem abaixo!
Outro ponto, você usa OUTRO Gerenciador de Janelas no seu Linux! Eu estou usando o Xfce no Slackware, não sei se isso tem alguma coisa a ver!


19. Re: Altura do controle não é respeitada!

Buckminster
Buckminster

(usa Debian)

Enviado em 04/03/2023 - 11:33h

Eu uso o Mate no Debian 11, mas por causa do LTSP.
No notebook tenho o Debian 11 com Xfce.
O código fiz no desktop porque o notebook está com problema no teclado.

Tem a ver sim se é Mate ou Xfce ou outro gerenciador de janelas.
Tanto o Debian quanto o Slack usam o X Window (X11 da Xorg) como ambiente gráfico.
Essa diferença está vindo dos gerenciadores de janelas Mate e Xfce.

Tenta colocar "font-size: 14px;" no css da entry e vá jogando: 14, 16, 12, etc, para ver se diminui.
Caso não resolver, já teremos uma idéia do problema.

Dentro em breve estarão lançando o GTK5. Aconselho a dar uma pesquisada porque o GTK3 ficará obsoleto.


________________________________________________
Always listen the Buck!



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts